从REST WCF服务中删除.svc,仍然启用"?wsdl"和"/ help"

goo*_*ate 2 iis rest wcf web-services url-rewriting

先前的SO问题/答案都没有引导我使用完整的REST/WCF解决方案,该解决方案从服务的所有方面移除SVC扩展.

具体来说,我指的是 servicename/helpservicename/wsdl...但我知道这是可能的. 以下是能够从/ help链接中删除WCF扩展的人员的工作示例.此外,他无法直接使用扩展名调用.svc.似乎WSDL不存在(虽然我更喜欢保留它)

如何使我的WCF REST应用程序更像该链接?

这是IIS URL Rewrite让我在那里的一部分.这看起来很糟糕,因为如果我没有第一个(两个)重写,那么Web服务随机变得不可思议.

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>


    <rewrite>
      <rules>
        <rule name="test1.svc" stopProcessing="true" >
          <match url="^test1.svc(.*)$"/>
        </rule>
        <rule name="test1" stopProcessing="true" >
          <match url="^test1(.*)$"/>
          <action type="Rewrite" url="/test1.svc{R:1}" />
        </rule>
      </rules>
    </rewrite>

  </system.webServer>
Run Code Online (Sandbox Code Playgroud)

Gar*_*ett 7

我假设您正在使用.Net Framework 4,基于您发布的链接.如果是这种情况,则不需要使用.svc文件,因为它现在与ASP.NET路由集成.因此,您可以使用新的ServiceRoute类将服务URL添加到ASP.NET Route表.有关更多信息,请参阅以下文章.