【发布时间】:2014-04-22 17:11:23
【问题描述】:
我收到了 Type 'WcfServiceLibrary1.GetDataErrorException' cannot be ISerializable and have DataContractAttribute attribute.
尝试在 WCF 服务中添加自定义异常时。
[ServiceContract]
public interface IService1 {
[OperationContract]
[FaultContract(typeof(GetDataErrorException))]
string GetData(int value);
}
public class Service1 : IService1 {
public string GetData(int value) {
if (value.Equals(0))
throw new FaultException<GetDataError>(new GetDataError(), new FaultReason("Zero"));
return string.Format("You entered: {0}", value);
}
}
[DataContract]
public class GetDataError {
public GetDataError() { }
}
[DataContract]
public class GetDataErrorException : FaultException<GetDataError> {
public GetDataErrorException(string message) :
base(new GetDataError(), new FaultReason(message)) { }
}
为什么这不起作用?我想我错过了一些简单的东西......
【问题讨论】:
-
FaultException
是否已经实现 ISerializable?然后它们会受到不同的序列化程序的影响吗? -
FaultException 继承自标记为 Serializable 的 Exception。我认为这是一个与应用领域相关的设计决策。可能是错的。
标签: c# wcf faultexception faultcontract