2012-05-22 101 views
2

我有这样的路线:ASP MVC路由问题点“。”

文件{FILEID}/{名}

它完美除非name中有一个点。

例如,这些工作:

文件1 /胡说,file90 /富 -

但事实并非如此:

文件1/blah.doc

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

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

的httpRuntime relaxedUrlToFileSystemMapping = “真”

,但它并没有帮助。

回答

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> 
+0

我敢肯定,会有一些丑陋的副作用。 –

+0

在我的情况下,我可以将路径限制到需要处理/Users/Detail/forename.surname的几个端点,并且此解决方案可以正常工作。网站广泛的处理程序将是一个错误,但对我来说这是一个可行的解决方案。 + 1 –