IIS 8.5中的尾部斜杠问题

时间:2016-03-22 10:10:24

标签: 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}"                            
                new { controller = "Home", action = "Index", id = "" }
            );

因此,MyDemo.mvc

将访问对MyDemoController的调用

现在发生了什么,当我使用url作为MyDemo.mvc /它工作时,但当我使用没有斜线的MyDemo.mvc时,它会抛出404错误。

仅在部署的服务器中发生这种情况。在使用IIS7.5的本地计算机中,Win 7可以正常运行。

手动更改是不可能的,因为站点地图文件中添加了大量网址,而我们的客户端不批准该方法。

它是特定于IIS版本的东西,还是任何小的调整都可以解决问题?

1 个答案:

答案 0 :(得分:2)

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

ASP.NET MVC - Routing - an action with file extension

Dots in URL causes 404 with ASP.NET mvc and IIS

  

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

总之,这里的配置是什么使.mvc文件工作:

<system.webServer>
  <handlers>
    <add name="MVCFileHandler"
      path="*.mvc"
      verb="GET" type="System.Web.Handlers.TransferRequestHandler"
      preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0"  />
  </handlers>
</system.webServer>

至于它在IIS7.5上工作,Win 7没有任何问题,而不是IIS 8.5。

看一下这个答案

Routing a url with extension in MVC4 won't work, tries to serve up static file

  

还有<modules runAllManagedModulesForAllRequests="true">但是   它似乎不适用于MVC4 / IIS8(以前在MVC3 / IIS7中没问题)   IIRC)。更多信息   here。   每个请求都会对此产生性能影响   通过管理的管道路线。

希望这一切都有帮助