Установите IncludeExceptionDetailInFaults в true в коде для WCF - PullRequest
69 голосов
/ 20 марта 2010

Как мне установить IncludeExceptionDetailInFaults в коде без использования App.Config?

Ответы [ 2 ]

104 голосов
/ 20 марта 2010

Да, конечно - на стороне сервера, прежде чем открывать сервисный хост. Однако для этого потребуется, чтобы вы самостоятельно размещали службу 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 файле.

29 голосов
/ 10 октября 2014

Вы также можете установить его в теге [ServiceBehavior] над объявлением класса, которое наследует интерфейс

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class MyClass:IMyService
{
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...