正如您可能从问题标题中看出的那样,我是 WCF 的新手。我已经实现了这个 Web 服务,其中一种方法抛出了一个自定义的 FaultException。
namespace Feed
{
[ServiceContract]
public interface IMyClass
{
[OperationContract]
[FaultContract(typeof(CustomError))]
DataSet MyMethod(int A, int T);
}
[DataContract]
public class CustomError
{
public CustomError(string msg, int code, int id)
{
Id = id;
ErrorMessage = msg;
ErrorCode = code;
}
[DataMember]
[DataMember]
public string ErrorMessage
{
get;
set;
}
[DataMember]
public int ErrorCode
{
get;
set;
}
[DataMember]
public int Id
{
get;
set;
}
}
}
然后,我在 MyMethod 的实现中抛出适当的异常
namespace Feeds
{
public class MyClass : IMyClass
{
DataSet MyMethod(int A, int T)
{
try
{
//todo
DataSet ds = new DataSet();
return ds;
}
catch (Exception ex)
{
throw new FaultException<CustomError>(new CustomError("a", 1, 0));
}
}
}
}
到目前为止,一切都很好。现在,我创建了一个使用此 Web 服务的简单 ASP.NET 网站。我在该网站中为 MyClass.svc Web 服务添加了一个 WebReference。问题是当我试图捕获异常时:catch(FaultException ex) { } 它无法识别 CustomError。我已经完成了以下故障排除:1.确保我更新了 wsdl(做了很多次,尝试更改其他内容,一切都反映在客户端) 2.尝试了 BasicHttpBinding 以及 wsHttpBinding(不确定这是否有区别) 3. 用谷歌搜索了很多,并虔诚地遵循了 MSDN 的示例代码。
还是没有运气!我错过了什么吗?任何建议将不胜感激。