我有一个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
方法中使用它们。只有在重新启动应用程序后才会应用行为。