Chr*_*isF 8 c# silverlight wcf-ria-services
我在服务器上有以下代码:
if (actualRowCount > maxRows)
{
throw new DomainException("OverMaxRowLimitException",
new OverMaxRowLimitException(string.Format(MaxRowsMessage,
actualRowCount, maxRows)));
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个DomainException具有InnerException属性集的new .我已经验证这是在调试器中设置的.
因此定义了自定义异常:
public class OverMaxRowLimitException : Exception
{
public OverMaxRowLimitException(string message)
{
this.Message = message;
}
public new string Message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这应该向客户端返回一个明智的错误消息,以便可以告诉用户有太多行.所以在加载完成处理程序中我们希望:
if (result.HasError)
{
ShowError(result.Error.InnerException.Message);
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,该InnerException物业是null.因此,我们必须检查的是外部异常消息的文本,该消息未正确传输到客户端.
有人建议我需要:
<customErrors mode="Off" />
Run Code Online (Sandbox Code Playgroud)
在Web配置文件中.我试过这个并没有用.
有人建议我需要:
[KnownType(typeof(OverMaxRowLimitException))]
Run Code Online (Sandbox Code Playgroud)
关于数据合同.现在,除非我把它放在错误的地方,否则这也行不通.
我也尝试添加[Serializable]自定义异常并将其替换为常规异常Exception.这些都没有奏效.
那么,为什么InnerException属性为null.我错过了什么?
我想你应该使用
[FaultContract(typeof(OverMaxRowLimitException))]
您的运营合同。而且你的OverMaxRowLimitException应该是可序列化的。
另外在使用中,我认为抛出异常的正确方法是使用
throw new FaultException<OverMaxRowLimitException>(yourException);
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |