【发布时间】:2011-04-01 12:57:53
【问题描述】:
我有一组 WCF 服务,到目前为止我一直在使用 ASP.NET MVC 应用程序。当服务器发现客户端提交的内容存在问题时,这些服务操作会返回 FaultException。例如:
if(string.IsNullOrEmpty(request.Name))
throw new FaultException<ValidationDictionary>(new ValidationDictionary());
这在我的 ASP.NET 应用程序中效果很好
catch(FaultException<ValidationDictionary> fault)
{
// Happy error handling.
}
但是,使用 Silverlight,这一切都失败了。服务器返回带有错误异常的 500 状态代码(如预期的那样),但对于 Silverlight 来说,这看起来像是一个 duff 响应。
以下 MS 文章指出了一个(丑陋的)解决方法:http://msdn.microsoft.com/en-us/library/ee844556%28v=vs.95%29.aspx 此解决方法使服务传输 200 个状态代码,即使存在 FaultException,以便 Silverlight 客户端可以获取它们。但这会弄乱我服务的“普通”客户端(我的 ASP.NET 应用程序,其他用户)。
但是,服务的重点是与您的客户分开。我仍然希望我的服务返回 500 个状态代码,以便我的 ASP.NET 应用程序可以检测到 FaultExceptions 并处理它们。但我也希望 Silverlight 也能够处理它们。
以前有人反对过这个吗?
【问题讨论】:
标签: asp.net silverlight wcf