Asp.net IIS 8.5中的尾部斜杠问题

Asp.net IIS 8.5中的尾部斜杠问题,asp.net,iis,asp.net-mvc-routing,Asp.net,Iis,Asp.net Mvc Routing,我们正在将一个ASP.NET项目从IIS6(Win Server 2003)移动到IIS 8.5(Win Server 2012 R2)。该项目有一些MVC组件,使用以下路由 routes.MapRoute("simple", "{controller}.mvc/{action}/{id}"); routes.MapRoute( "Default", "{controller}.mvc/{action}/{id}"

我们正在将一个ASP.NET项目从IIS6(Win Server 2003)移动到IIS 8.5(Win Server 2012 R2)。该项目有一些MVC组件,使用以下路由

routes.MapRoute("simple", "{controller}.mvc/{action}/{id}");
routes.MapRoute(
                "Default", 
                "{controller}.mvc/{action}/{id}"                            
                new { controller = "Home", action = "Index", id = "" }
            );
因此,MyDemo.mvc将访问对MyDemo控制器的调用

现在发生了什么,当我使用url作为MyDemo.mvc/时,它可以工作,但是当我使用MyDemo.mvc而不使用斜杠时,它会抛出404错误

这仅在部署的服务器中发生。在我们使用IIS7.5的本地机器中,Win 7可以正常工作

手动更改是不可能的,因为有许多URL添加到站点地图文件中,并且我们的客户不批准该方法


这是IIS版本特有的还是任何小的调整都可以解决这个问题?

看看下面的内容。我相信这是你的问题。它与
.mvc
扩展有关

问题是IIS将把.mvc文件作为静态文件处理,并且 默认情况下,不会通过mvc路由假定的.mvc文件 应用IIS会处理请求,而您的MVC代码永远不会收到请求 更改为路由到此文件

总之,以下是使
.mvc
文件正常工作的配置:


还有
但是 它似乎对MVC4/IIS8不起作用(以前在MVC3/IIS7中还可以) (IIRC)。更多信息 . 这也会影响性能,因为每个请求都会影响性能 通过托管管道进行路由


希望所有这些都有帮助

简单的
和默认的路由是相同的,但是简单的没有任何默认设置。@nkosi这是我看到的,看起来很奇怪,但如果你删除简单的,这就是我在那里找到的代码
MyDemo.mvc
应该可以工作,前提是您有一个带有
索引的
MyDemoController
操作,但即使没有这个更改,它在IIS 7.5中也可以工作,没有尾随斜杠,但在IIS 8.5中似乎需要修改,web.config的
标记是什么样子的。我通过IIS添加处理程序来修复它。使用IsapiModule和aspnet_isapi.dll在HandlerMappings中添加了自定义处理程序…感谢@Nkosi的帮助,…非常感谢:)
<system.webServer>
  <handlers>
    <add name="MVCFileHandler"
      path="*.mvc"
      verb="GET" type="System.Web.Handlers.TransferRequestHandler"
      preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0"  />
  </handlers>
</system.webServer>