【问题标题】:Create WCF Service to be hosted differently创建以不同方式托管的 WCF 服务
【发布时间】:2012-08-27 15:12:36
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: wcf iis-7


    【解决方案1】:

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

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

    这样您就可以拥有地址中没有“.svc”的端点。您还可以在不使用路由的情况下使用服务主机工厂,方法是为每个 service(不是端点)创建一个 .svc 文件,并在 <%@ ServiceHost 指令中使用 Factory 属性。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2019-03-02
    相关资源
    最近更新 更多