3

我有一个 IIS 托管的 WCF 服务,我需要向它添加一个端点行为。我不能只是将它添加到 web.config。(我们需要支持插件架构,插件编写者将无法访问我的 web.config。)我尝试将其放入服务的静态构造函数中:

var endpointDispatcher = OperationContext.Current.EndpointDispatcher;
SilverlightFaultMessageInspector inspector = new SilverlightFaultMessageInspector();
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector);

但它会引发异常,提示“ServiceHost 打开后无法更改此值”。如果我在添加检查器对象之前调用 host.Close() ,它仍然会引发相同的异常。

我也试过这个:

var host = OperationContext.Current.Host;
host.Description.Endpoints[0].Behaviors.Add(new SilverlightFaultBehavior());

但它似乎没有效果。端点行为永远不会被调用。

那么是否可以将端点行为添加到 IIS 托管的 WCF 服务?

4

1 回答 1

2

端点行为只能在ServiceHost打开之前添加(开始托管服务)。所以它需要重置你的服务。ServiceHost对 IIS 中托管的服务的访问是通过ServicHostFactory必须在 .svc 文件中定义的自定义进行的。因此,您通常需要类似 custom 的东西ServiceHostFactory,它将从某个存储库加载行为并在CreateServiceHost方法中使用它们。只有在重新启动应用程序后才会应用行为。

于 2011-05-03T20:49:12.610 回答