1. ホーム
  2. c#

WCFのコードでIncludeExceptionDetailInFaultsをtrueに設定する

2023-11-29 01:29:19

質問

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 ファイルでこのカスタムサービスホストファクトリを参照します。