2

从 Wcf 数据服务抛出异常并从 .net 客户端捕获它们的最佳实践是什么?

4

1 回答 1

2

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

  1. 默认情况下,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;
        }
    }
}
  1. 如果您在服务器端抛出异常,则只有消息在功能上传输到客户端,因此请确保异常消息包含您希望在客户端显示的内容。
  2. 除此之外,只需遵循客户端上异常处理的其他最佳实践:http: //msdn.microsoft.com/en-us/library/seyhszts.aspx
于 2012-08-24T15:48:29.267 回答