我有这条路线:
文件{FILEID} / {名称}
除非name
中有一个点,否则它的效果非常好。
例如,这些工作:
file1 / blah,file90 / foo -
但它没有:
文件1 / blah.doc
我遇到的所有情况都是404 error
。似乎它查找实际文件blah.doc
而不是使用路由系统。
此问题仅在生产服务器中发生。我甚至试过
httpRuntime relaxedUrlToFileSystemMapping =“true”
但它没有帮助。
答案 0 :(得分: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>