从 Wcf 数据服务抛出异常并从 .net 客户端捕获异常的最佳实践是什么?
最佳答案
总的来说,我不确定是否有很多最佳实践,但这里有一些可能会有所帮助的想法。
- 默认情况下,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 .
关于wcf-data-services - WCF 数据服务中错误处理的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12090651/