2

我有这条路线:

文件{FileId}/{name}

name除非里面有一个点,否则它工作得很好。

例如,这些工作:

文件 1/blah,文件 90/foo -

但它没有:

文件 1/blah.doc

在这种情况下,我得到的只是404 error. 似乎它寻找实际文件blah.doc而不是使用路由系统。

此问题仅发生在生产服务器中。我什至试过

httpRuntime RelaxedUrlToFileSystemMapping="true"

但这没有帮助。

4

1 回答 1

1

'.' 之后的所有内容 是文件扩展名。如果该扩展没有映射到 ASP.NET,它就不会被移交给 ASP.NET 处理程序。IIS 改为查找静态文件。因此,您需要为您的案例(web.config)添加一个处理程序,然后您的路由将能够捕获请求。

<validation validateIntegratedModeConfiguration="false" />
   <handlers>
      <add name="FileHandlerDot" verb="GET" path="file*/*.*" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   </handlers>
</validation>
于 2012-09-01T02:47:34.023 回答