在WCF代码中将IncludeExceptionDetailInFaults设置为true

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

是的,当然 – 在服务器端,在打开服务主机之前。 然而,这将需要你自己托pipe的WCF服务 – 不会在IIS托pipescheme中工作:

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托pipe中执行相同的操作,则必须创build您自己的自定义MyServiceHost后代以及一个可以实例化此类自定义服务主机的合适的MyServiceHostFactory ,然后在* .svc文件中引用此自定义服务主机工厂。

你也可以在inheritance接口的类声明上面的[ServiceBehavior]标签中设置它

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