调用url中没有服务名称的WCF服务约定/方法



我的WCF服务位于

http:/xxx.xxx.xxx.xxx:6040/service.svc/

在IIS7.5中,有两个合同SubmitReturnGetForward

但客户在呼叫服务

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>

最新更新