在URL中调用没有服务名称的WCF服务合同/方法

时间:2013-07-08 11:33:22

标签: wcf iis-7 url-rewriting hosting

我的WCF服务位于此位置

http:/xxx.xxx.xxx.xxx:6040/service.svc/
在IIS7.5中

,包含两个合同SubmitReturnGetForward

但是客户在

调用该服务
http:/xxx.xxx.xxx.xxx:6040/SubmitReturn/232323

在根上,即网址中没有服务名称,但应该像这样调用服务

 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的根目录?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我正在关注此链接进行网址重写( 良好链接

<强> www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules

url重写在我的服务器上的“article.aspx”(转到上面提供的链接)上工作正常。

但是对于我的服务,它给出了错误“ 端点未找到 ”。

这是我最新的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>