ASP.NET MVC 3路由参数中的点字符

时间:2011-06-30 11:57:06

标签: asp.net-mvc asp.net-mvc-3 url-routing asp.net-mvc-routing

我的应用程序中没有自定义路由,只有默认路由。如果我尝试打开localhost/myapp/controller/action/bla.bla,它在我的机器上运行正常(Windows 7 x32,包括Cassini和IIS),但在服务器上失败(2008 R2 x64)。找到similar question但解决方案不起作用。另外,发现this article Eilon说它是MVC的一个特殊角色,它是“按设计”。为什么我的机器和生产箱之间存在差异,我该如何解决?

更新:问题网站启用了ExtensionlessUrl-ISAPI-4.0_64bit和ExtensionlessUrl-Integrated-4.0并映射到“*。”。 web.config中没有任何托管处理程序。 Dmitry提到的补丁“不适用于您的计算机”,可能因为它已经安装了SP1。我可以确认ASP.NET MVC报告的是404,而不是IIS,因为我可以在Application_PreSendRequestHeaders中看到请求。此外,如果我使用重载的GetHttpHandler()附加MvcRouteHandler的后代,它记录所有RouteData,则表明“id”已正确映射到“bla.bla”。有什么想法吗?

6 个答案:

答案 0 :(得分:3)

应用程序是否使用映射到“*”的任何托管处理程序。延期?如果是这样,请查看此链接:

http://support.microsoft.com/kb/980368

答案 1 :(得分:2)

这项工作对我来说:

<system.webServer>
<handlers>
  <add name="UrlRoutingHandler"
     type="System.Web.Routing.UrlRoutingHandler, 
           System.Web, Version=4.0.0.0, 
           Culture=neutral, 
           PublicKeyToken=b03f5f7f11d50a3a"
     path="/Users/*"
     verb="GET"/>
</handlers>
</system.webServer>

答案 2 :(得分:1)

通过查看所有第一次机会异常,您能找到哪些错误(例外)。 This将告诉您如何找到应用程序抛出的所有第一次机会异常。

答案 3 :(得分:1)

答案 4 :(得分:0)

请提供更多详细信息,例如预期结果,您会得到什么错误。你到目前为止尝试过哪些解决方案?您是否尝试过配置解决方案?

<httpRuntime relaxedUrlToFileSystemMapping="true" />

至于“为什么我的机器和生产箱之间存在差异”......好吧,我的朋友,这是一个只有你能回答的问题。

答案 5 :(得分:0)

所有最新的Windows更新(在SP1之后)似乎都解决了这个问题。