我有这条路线:
文件{FileId}/{name}
name
除非里面有一个点,否则它工作得很好。
例如,这些工作:
文件 1/blah,文件 90/foo -
但它没有:
文件 1/blah.doc
在这种情况下,我得到的只是404 error
. 似乎它寻找实际文件blah.doc
而不是使用路由系统。
此问题仅发生在生产服务器中。我什至试过
httpRuntime RelaxedUrlToFileSystemMapping="true"
但这没有帮助。
我有这条路线:
文件{FileId}/{name}
name
除非里面有一个点,否则它工作得很好。
例如,这些工作:
文件 1/blah,文件 90/foo -
但它没有:
文件 1/blah.doc
在这种情况下,我得到的只是404 error
. 似乎它寻找实际文件blah.doc
而不是使用路由系统。
此问题仅发生在生产服务器中。我什至试过
httpRuntime RelaxedUrlToFileSystemMapping="true"
但这没有帮助。
'.' 之后的所有内容 是文件扩展名。如果该扩展没有映射到 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>