【发布时间】:2013-01-11 21:20:27
【问题描述】:
我在服务器上有以下代码:
if (actualRowCount > maxRows)
{
throw new DomainException("OverMaxRowLimitException",
new OverMaxRowLimitException(string.Format(MaxRowsMessage,
actualRowCount, maxRows)));
}
这将创建一个新的DomainException,并设置了InnerException 属性集。我已经验证这是在调试器中设置的。
自定义异常是这样定义的:
public class OverMaxRowLimitException : Exception
{
public OverMaxRowLimitException(string message)
{
this.Message = message;
}
public new string Message { get; set; }
}
这应该向客户端返回一个合理的错误消息,以便可以告诉用户有太多行。所以在加载完成处理程序中我们想要:
if (result.HasError)
{
ShowError(result.Error.InnerException.Message);
}
很遗憾,InnerException 属性是 null。所以我们只需要检查外部异常消息的文本,它也没有正确地传输到客户端。
有人建议我需要:
<customErrors mode="Off" />
在网络配置文件中。这个我试过了,还是不行。
也有人建议我需要:
[KnownType(typeof(OverMaxRowLimitException))]
关于数据合同。现在除非我把它放在错误的地方,否则这也不起作用。
我还尝试将[Serializable] 添加到自定义异常中,并将其替换为通用Exception。这些都不起作用。
那么,为什么InnerException 属性为空。我错过了什么?
【问题讨论】:
-
我认为你应该使用 FaultContracts。
-
@Jehof - 我们使用的是
DomainException。 -
您是否尝试将 OverMaxRotLimitException 与您的 silverlight 客户端项目共享?
标签: c# silverlight wcf-ria-services