我的WCF服务位于
http:/xxx.xxx.xxx.xxx:6040/service.svc/
在IIS7.5中,有两个合同SubmitReturn
和GetForward
。
但客户在呼叫服务
http:/xxx.xxx.xxx.xxx:6040/SubmitReturn/232323
在根上,即url中没有服务名称,但应该像这样调用服务
http:/xxx.xxx.xxx.xxx:6040/service.svc/SubmitReturn/123456789
那么,我如何在提供WCF服务
http:/xxx.xxx.xxx.xxx:6040/
而不是
http:/xxx.xxx.xxx.xxx:6040/service.svc/
IIS的根?
请参阅正在创建不带.svc文件的WCF服务
其中一条评论中提到的链接-http://blogs.msdn.com/b/rampo/archive/2009/10/27/activation-without-svc-files-config-based-activation-cba.aspx
我一直在关注这个链接进行URL重写(好链接)
www.iis.net/elearn/extensions/url-rewrite-module/使用失败的请求跟踪来跟踪重写规则
在我的服务器上,url重写对"article.aspx"(请访问上面提供的链接查看)非常有效。
但对于我的服务,它给出了错误"Endpoint Not Found"。
这是我最新的web.config文件:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="MessageWebService.MessageWebService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:6040"/>
</baseAddresses>
</host>
<endpoint
address=""
binding="webHttpBinding"
contract="MessageWebService.IMessageWebService"
bindingConfiguration="MessageWebService"
behaviorConfiguration="MessageWebService">
</endpoint>
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="MessageWebService"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647" />
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MessageWebService">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<rewrite>
<rules>
<rule name="Fail bad requests">
<match url="." />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="localhost" />
</conditions>
<action type="AbortRequest" />
</rule>
<rule name="Rewrite to MessageWebService.MessageWebService.svc">
<match url="*" />
<action type="Rewrite" url="/MessageWebService.MessageWebService.svc/{R:0}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>