我有一个WCF服务,它以编程方式创建其端点而不是使用配置文件 - 我正在研究这个问题,因为我们的现场工程师很容易破坏XML,我们可能会在不同的场景中使用不同类型的绑定。
这适用于自托管环境(控制台应用程序,Windows应用程序)和Windows服务。
我可以使用IIS中的服务执行此操作,还是必须为每个端点提供.SVC文件?
客户端的端点地址是否也必须包含.SVC扩展名?
这不是第三方使用的服务,只能由我们的客户端组件使用。我们可能会在稍后公开我们的部分API。
答案 0 :(得分:2)
如果您使用的是.NET Framework 4.0(及更高版本),则可以使用ASP.NET路由集成来使用自定义ServiceHostFactory
实现来定义服务。你需要的一些东西:
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上的帖子。