【发布时间】:2012-01-11 23:07:26
【问题描述】:
我想在 IIS 7.5 中托管 WCF 4.0 服务,并能够使用 basicHttpBinding 绑定到它,还可以使用 webHttpBinding 以 RESTful 方式绑定。
我需要能够像这样访问它:
http://server/wcf/service/method/parameters(休息)
也像这样:
http://server/wcf/service.svc(基本 HTTP)
到目前为止,我的 Web.config 有这个:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="json">
<webHttp defaultOutgoingResponseFormat="Json" helpEnabled="true" />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="SAIF.Services.WCF.Services.CustomerContactService">
<endpoint address="CustomerContact" behaviorConfiguration="json" binding="webHttpBinding" contract="SAIF.Services.WCF.Contracts.ICustomerContactService" />
<endpoint address="CustomerContact.svc" binding="basicHttpBinding" contract="SAIF.Services.WCF.Contracts.ICustomerContactService" />
</service>
<service name="SAIF.Services.WCF.Services.OnlineLoginService">
<endpoint address="OnlineLogin" binding="basicHttpBinding" contract="SAIF.Services.WCF.Contracts.IOnlineLoginService" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">
<serviceActivations>
<add relativeAddress="CustomerContact.svc" service="SAIF.Services.WCF.Services.CustomerContactService" />
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
</configuration>
我的 global.asax 文件中也有这个,用于扩展少激活:
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the application is started
Routing.RouteTable.Routes.Add(New ServiceRoute("CustomerContact", New ServiceHostFactory, GetType(SAIF.Services.WCF.Services.CustomerContactService)))
Routing.RouteTable.Routes.Add(New ServiceRoute("OnlineLogin", New ServiceHostFactory, GetType(SAIF.Services.WCF.Services.OnlineLoginService)))
End Sub
我用这个装饰了服务:
我的服务接口是UriTemplates
似乎无法以 REST 方式和通过 SOAP 访问它们。
谢谢! 山姆
【问题讨论】:
-
为什么它必须是相同的基本 URL?为什么不
http://server/wcf/restservice/method/parameters和http://server/wcf/soapservice/service.svc? -
@JohnSaunders - 我们将拥有 20 到 25 个 WCF 服务,所以我考虑采用这种命名约定以使其易于维护,但我想可能会有所不同。
-
我的建议是允许“soapservice”和“restservice”在 IIS 中成为单独的应用程序。 "restservice" 将是静态 URL 映射到路由的开始。
-
您使用的是哪个 .NET 版本?是.NET 4.0
标签: wcf wcf-binding wcf-rest