一切都适用于已知的异常(例如InvalidOperationException和SystemException),但是当我尝试使用自己的自定义异常时,它不起作用,我得到以下wcf异常: “从管道读取错误:管道已经结束。(109,0x6d)”
这是我的自定义例外:
[KnownType(typeof(SessionExpiredException))]
[global::System.Serializable]
[DataContract]
public class SessionExpiredException : Exception
{
public SessionExpiredException() { }
public SessionExpiredException(string message) : base(message) { }
public SessionExpiredException(string message, Exception inner) : base(message, inner) { }
protected SessionExpiredException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}
我在做错了什么?我错过了一个属性吗?
答案 0 :(得分:0)
您不需要将自定义错误建模为异常,而是作为DataMetract的DataContract建立您想要返回的信息。然后,在WCF服务上,只返回类型的FaultException。
此页面提供了有关如何建模的良好示例: http://msdn.microsoft.com/en-us/library/ms752208.aspx
答案 1 :(得分:-1)
public SessionExpiredException() { }
public SessionExpiredException(string message) : base(message) { }
public SessionExpiredException(string message, Exception inner) : base(message, inner) { }
protected SessionExpiredException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
上述解决方案错误。