WCF数据服务中的错误处理的最佳实践

时间:2012-08-23 11:34:46

标签: wcf-data-services odata

从Wcf数据服务中抛出异常并从.net客户端捕获异常的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

总的来说,我不确定是否有很多最佳实践,但这里有一些可能会有所帮助的想法。

  1. 默认情况下,WCF数据服务不会将异常详细信息传输到客户端。这是因为我们认为默认情况下服务应该是安全的。传输异常细节可能导致无意的信息泄露。要启用详细的例外传输,您需要将ServiceBehavior属性添加到您的服务并将UseVerboseErrors设置为true:
  2. 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;
            }
        }
    }
    
    1. 如果您在服务器端抛出异常,则只有消息在功能上传输到客户端,因此请确保异常消息包含您要在客户端上显示的内容。
    2. 除此之外,只需按照客户端上的异常处理的其他最佳做法进行操作:http://msdn.microsoft.com/en-us/library/seyhszts.aspx