从REST WCF服务中删除.svc,但仍启用“.wsdl”和“/help”

从REST WCF服务中删除.svc,但仍启用“.wsdl”和“/help”,wcf,web-services,iis,rest,url-rewriting,Wcf,Web Services,Iis,Rest,Url Rewriting,前面的SO问题/答案都没有让我找到一个完整的REST/WCF解决方案,该解决方案从服务的各个方面删除了SVC扩展 具体来说,我指的是servicename/help和servicename/wsdl。。。但我知道这是可能的。能够从/help链接中删除WCF扩展的用户。此外,他还使直接使用扩展名调用.svc变得不可能。WSDL似乎不存在,尽管我更愿意保留它 如何使我的WCF REST应用程序更像那个链接 这里是IIS URL重写,让我有一部分的方式。这看起来有点胡闹,因为如果我没有两次重写中的第一

前面的SO问题/答案都没有让我找到一个完整的REST/WCF解决方案,该解决方案从服务的各个方面删除了SVC扩展

具体来说,我指的是servicename/help和servicename/wsdl。。。但我知道这是可能的。能够从/help链接中删除WCF扩展的用户。此外,他还使直接使用扩展名调用.svc变得不可能。WSDL似乎不存在,尽管我更愿意保留它

如何使我的WCF REST应用程序更像那个链接

这里是IIS URL重写,让我有一部分的方式。这看起来有点胡闹,因为如果我没有两次重写中的第一次,那么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>

根据您发布的链接,我假设您正在使用.NETFramework4。如果是这种情况,则不需要使用.svc文件,因为它现在与集成。因此,可以使用新类将服务URL添加到ASP.NET。有关更多信息,请参阅以下内容

WCF 4还允许您使用无文件激活和Windows激活服务提供别名寻址。是

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment>
      <serviceActivations>
        <add relativeAddress="/GreetingService" service="GreetingService"/>
      </serviceActivations>
    </serviceHostingEnvironment>
  </system.serviceModel>
</configuration>

@斯蒂芬·彭定康-我注意到你是一个非常好的使用者。我会看看这篇文章是否能让你读到这篇文章……了解如何实现这一方法。不起作用。此外,未向IIS注册的任何内容都会出现此错误:扩展名“.t”未向WCF/WF处理程序注册。请从配置文件中删除“system.serviceModel/serviceHostingEnvironment/serviceActivations”中的相对地址“~/t1.t”,或向WCF/WF处理程序注册相应的扩展名“.t”。请参阅「http://msdn.microsoft.com/en-us/library/bb515343.aspx'了解如何在IIS中注册扩展。您可能需要在.config中处理所有模块hack,和/或正确设置IIS中静态内容与动态内容的模块/处理程序。检查静态内容处理程序是否设置为期望文件夹或文件存在。