如何添加端点行为以打开IIS托管的WCF服务



我有一个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服务中?

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

最新更新