我有一个 WCF 服务,它以编程方式创建其端点,而不是使用配置文件 - 我正在研究这一点,因为我们的现场工程师很容易破坏 XML,并且我们可能在不同的场景中使用不同类型的绑定(bind)。
这在自托管环境(控制台应用程序、Windows 应用程序)和作为 Windows 服务中运行良好。
我可以使用 IIS 中的服务来执行此操作吗?还是必须为每个端点提供 .SVC 文件?
客户端的端点地址也必须包含 .SVC 扩展名吗?
这不是供第三方使用的服务,仅供我们的客户端组件使用。我们可能稍后会公开部分 API,但一开始不会。
最佳答案
如果您使用的是 .NET Framework 4.0(及更高版本),则可以使用 ASP.NET 路由集成来定义使用自定义 ServiceHostFactory
的服务。执行。您需要一些东西:
- 在 web.config 中,设置属性
aspNetCompatibilityEnabled
关于<system.serviceModel / serviceHostingEnvironment>
元素至true
- 添加
global.asax
/global.asax.cs
文件,并在Application_Start
中添加新的ServiceRoute
到 ASP.NETRouteTable.Routes
收藏。服务路由要求您定义一个新的服务主机工厂,您可以在其中以编程方式定义端点。
这样,您就可以拥有地址中不带“.svc”的端点。您还可以在不使用路由的情况下使用服务主机工厂,方法是为每个服务(而非端点)创建 .svc 文件,并使用 Factory
<%@ ServiceHost
中的属性指令。
有关服务主机工厂的更多信息,请查看 http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx 上的帖子.
关于wcf - 创建以不同方式托管的 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144730/