如何在WCF的代码中将IncludeExceptionDetailInFaults设置为true?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

如何在不使用App.Config的情况下在代码中设置IncludeExceptionDetailInFaults?

提问于
用户回答回答于

是的,当然 - 在服务器端,在打开服务主机之前。但是,这将需要自行托管WCF服务 - 在IIS托管方案中不起作用:

ServiceHost host = new ServiceHost(typeof(MyWCFService));

ServiceDebugBehavior debug = host.Description.Behaviors.Find<ServiceDebugBehavior>();

// if not found - add behavior with setting turned on 
if (debug == null)
{
    host.Description.Behaviors.Add(
         new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
}
else
{  
    // make sure setting is turned ON
    if (!debug.IncludeExceptionDetailInFaults)
    {
        debug.IncludeExceptionDetailInFaults = true;
    }
}

host.Open();

如果需要在IIS托管中执行相同的操作,则必须创建自己的自定义MyServiceHost后代和适合的MyServiceHostFactory实例化此类自定义服务主机,并在* .svc文件中引用此自定义服务主机工厂。

用户回答回答于

还可以将它设置在继承该接口的类声明上方的[ServiceBehavior]标签中

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyClass:IMyService
{
...
}

扫码关注云+社区