2

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

这在自托管环境(控制台应用程序、Windows 应用程序)和作为 Windows 服务中运行良好。

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

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

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

4

1 回答 1

2

如果您使用的是 .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上的帖子。

于 2012-08-27T19:03:39.040 回答