Wie setze ich IncludeExceptionDetailInFaults im Code, ohne App.Config zu verwenden?
73
Ja, sicher - auf der Serverseite, bevor Sie den Service-Host öffnen. Dies würde jedoch erfordern, dass Sie den WCF-Dienst selbst hosten - funktioniert in IIS-Hosting-Szenarien nicht:
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();
Wenn Sie beim IIS-Hosting dasselbe tun müssen, müssen Sie Ihren eigenen benutzerdefinierten MyServiceHost
Nachkommen und einen geeigneten Nachkommen erstellen MyServiceHostFactory
, der einen solchen benutzerdefinierten Service-Host instanziiert, und in Ihrer * .svc-Datei auf diese benutzerdefinierte Service-Host-Factory verweisen.
Sie können es auch im Tag [ServiceBehavior] über Ihrer Klassendeklaration festlegen, die die Schnittstelle erbt
[ServiceBehavior(IncludeExceptionDetailInFaults = true)] public class MyClass:IMyService { ... }
quelle