0

我以这种方式配置了我的 WCF 数据服务:

public static void InitializeService(DataServiceConfiguration config)
    {
      config.UseVerboseErrors = true;

在 HandleException 方法中,我设置了这个:

 protected override void HandleException(HandleExceptionArgs args)
    {
      args.UseVerboseErrors = true;

我将此属性添加到我的服务类中:

  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
  public class InformationService: DataService<InformationEntities>

在客户端(Android)我从服务器收到这条消息:

An error occurred while processing this request.

详细的异常在哪里?我还应该设置什么?

4

1 回答 1

0

您可以尝试在主机启动时将其添加到您的 WCF 服务代码中。它会导致异常详细信息包含在向客户端抛出并被客户端捕获的错误中。没有这个,异常的细节就会被隐藏。

并确保在捕获这些内部异常时,使用 WCF System.ServiceModel.CommunicationObjectFaultedException 对象向客户端抛出一个通用的“故障”对象。Dot NET 异常是以 Microsoft 为中心的,因此如果您向非 MS 设备(如 Android 或 iPhone)抛出错误,则需要使用 CommunicationObjectFaultedException。

ServiceDebugBehavior debug = ServiceHost.Description.Behaviors.Find<ServiceDebugBehavior>();
if (debug == null) {
    ServiceHost.Description.Behaviors.Add(new ServiceDebugBehavior {     IncludeExceptionDetailInFaults = true });
} else {
    if (!debug.IncludeExceptionDetailInFaults) {
        debug.IncludeExceptionDetailInFaults = true;
   }
}
于 2013-08-01T11:45:57.823 回答