【问题标题】:How to add endpoint behavior to open IIS hosted WCF service如何添加端点行为以打开 IIS 托管的 WCF 服务
【发布时间】:2011-05-03 20:23:23
【问题描述】:

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

【问题讨论】:

标签: wcf iis wcf-endpoint endpointbehavior


【解决方案1】:

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

【讨论】:

  • “重启应用后”?所以应用程序将启动(例如,调用 global.asax 中的 Application_Start),ServiceHostFactory 将创建服务主机,然后应用程序将重新启动(再次调用 Application_Start)?有没有办法让 ServiceHostFactory 最初创建具有端点行为的服务主机?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 1970-01-01
  • 2022-12-13
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多