从 Wcf 数据服务抛出异常并从 .net 客户端捕获它们的最佳实践是什么?
问问题
2476 次
1 回答
2
一般来说,我不确定是否有很多最佳实践,但这里有一些想法可能会有所帮助。
- 默认情况下,WCF 数据服务不会将异常详细信息传输到客户端。这是因为我们认为默认情况下服务应该是安全的。传输异常详细信息可能会导致无意的信息泄露。要打开详细的异常传输,您需要将
ServiceBehavior
属性添加到您的服务并设置UseVerboseErrors
为 true:
using System.Data.Services;
using System.Data.Services.Common;
using System.ServiceModel;
namespace Scratch.Web
{
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class ScratchService : DataService<ScratchEntityFrameworkContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
config.UseVerboseErrors = true;
}
}
}
- 如果您在服务器端抛出异常,则只有消息在功能上传输到客户端,因此请确保异常消息包含您希望在客户端显示的内容。
- 除此之外,只需遵循客户端上异常处理的其他最佳实践:http: //msdn.microsoft.com/en-us/library/seyhszts.aspx。
于 2012-08-24T15:48:29.267 回答