创建以不同方式托管的WCF服务

时间:2012-08-27 15:12:37

标签: wcf iis-7

我有一个WCF服务,它以编程方式创建其端点而不是使用配置文件 - 我正在研究这个问题,因为我们的现场工程师很容易破坏XML,我们可能会在不同的场景中使用不同类型的绑定。

这适用于自托管环境(控制台应用程序,Windows应用程序)和Windows服务。

我可以使用IIS中的服务执行此操作,还是必须为每个端点提供.SVC文件?

客户端的端点地址是否也必须包含.SVC扩展名?

这不是第三方使用的服务,只能由我们的客户端组件使用。我们可能会在稍后公开我们的部分API。

1 个答案:

答案 0 :(得分:2)

如果您使用的是.NET Framework 4.0(及更高版本),则可以使用ASP.NET路由集成来使用自定义ServiceHostFactory实现来定义服务。你需要的一些东西:

  • 在web.config中,将aspNetCompatibilityEnabled元素上的属性<system.serviceModel / serviceHostingEnvironment>设置为true
  • 添加global.asax / global.asax.cs文件,并在Application_Start中向ASP.NET ServiceRoute集合添加新的RouteTable.Routes。服务路径要求您定义新的服务主机工厂,您可以在其中以编程方式定义端点。

通过它,您将能够在其地址中没有“.svc”的端点。您也可以在不使用路由的情况下使用服务主机工厂,为每个服务(非端点)创建.svc文件,并使用Factory指令中的<%@ ServiceHost属性

有关服务主机工厂的更多信息,请查看http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx上的帖子。