【问题标题】:WCF custom ServiceHost on IISIIS 上的 WCF 自定义 ServiceHost
【发布时间】:2015-01-20 11:18:11
【问题描述】:

我正在尝试使用 IIS 上的自定义 ServiceHost 托管我的 WCF 服务。我在 MSDN 上找到了几篇这样的文章:Custom Service Host。在这里,我应该在我的服务 svc 文件中添加一些内容,但我没有,也无法在 Visual Studio 中添加。然后我找到了这篇文章:Configuration-Based Activation in IIS and WAS。这说

“基于配置的激活功能消除了拥有 .svc 文件的要求,从而消除了相关的开销。”

所以我可以在我的 Web.config 中创建一个 serviceHostingEnvironment 条目(我也没有,但我猜 App.config 是等效的,因为它包含我的 system.serviceModel 配置)。但是,我必须为服务激活指定一个relativeAddress

"relativeAddress 属性必须设置为相对地址,例如<sub-directory>/service.svc~/<sub-directory/service.svc。"

所以它应该指向我的 svc 文件?我有点困惑,你能指出我正确的方向吗?

【问题讨论】:

  • 您当前的项目类型是什么(Windows 服务?)?但是您想在 IIS 中托管该服务,不是吗?
  • 我有一个 WCF 服务库项目,我可以在 IIS 上托管它我只想插入我的自定义 ServiHostFactory

标签: c# .net wcf iis


【解决方案1】:

我知道 MSDN 上的文档有点混乱。这是您需要放入 web.confi/app.config 的配置

<serviceHostingEnvironment>
  <serviceActivations>
    <add relativeAddress="MyNonExistingServiceSVC.svc" service="MyService" factory=”MyServiceHostFactory”/>
  </serviceActivations>
</serviceHostingEnvironment>

这里的相对地址只是任何虚拟名称。此名称将用于浏览您的服务元数据。请注意,此名称可以是您选择的任何名称,并且不需要在磁盘上存在相同的物理文件。它只需要任何带有 .SVC 扩展名的名称。 因此,在访问服务元数据时,您的 URL 将是

http://myserver/myservice/MyNonExistingServiceSVC.svc

【讨论】:

  • 似乎由于某种原因我的 ServiceHost 工厂没有被调用
  • 确保您的服务工厂名称在工厂参数中正确。如果它驻留在您的服务之外的单独程序集中,则使用程序集名称和类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多