WCF IncludeExceptionDetailInFaults программно? - PullRequest
20 голосов
/ 01 декабря 2010

У меня есть следующее в файле конфигурации, и я пытаюсь найти эквивалентные биты в C #, так как у меня есть служба, которая полностью настроена программно. Какой класс / свойство / метод я должен искать?

Спасибо.

<behaviors>
    <serviceBehaviors>
        <behavior name="ServiceGatewayBehavior">
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
    </serviceBehaviors>
</behaviors>

1 Ответ

35 голосов
/ 01 декабря 2010

Если вы хотите сделать это во всех случаях, используйте ServiceBehaviorAttribute:

   [ServiceBehavior(IncludeExceptionDetailInFaults=true)]
   class MyServiceImplementation : IMyService
   {
      /// ...
   }

Если вы хотите сделать это только в некоторых случаях, определяется во время выполнения ....

////////////////////////////////////
// Must include these at the top of file
using System.ServiceModel;
using System.ServiceModel.Description;
// ...

/////////////////////////////////////////////////////////////
// Inside whichever function initializes the service host
//
_serviceHost = new ServiceHost(_service);
if (IWantToIncludeExceptionDetails())
{
    var behavior = _serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>();
    behavior.IncludeExceptionDetailInFaults = true;
}
_serviceHost.Open();
...