Windows中的ASP.NET MVC路由与预留文件名

时间:2009-06-12 14:59:00

标签: asp.net-mvc windows iis

在我们的ASP.NET MVC应用程序中,我们注意到我们不能拥有禁止的DOS文件名 - COM1COM9LPT1LPT9,{ {1}},CONAUXPRN - 我们的路线中的任何位置。它们不可避免地导致IIS告诉我们找不到文件,即使我们设置路由不首先检查文件是否存在。我们如何解决这个问题?

4 个答案:

答案 0 :(得分:36)

这已在ASP.NET 4中解决。http://haacked.com/archive/2010/04/29/allowing-reserved-filenames-in-URLs.aspx

您可以在web.config中应用放宽此限制的设置。

<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>

    <!-- ... your other settings ... -->
  </system.web>
</configuration>

希望有所帮助。

答案 1 :(得分:18)

自从提出问题以来,我发现错误是在ASP.NET中,而不是IIS或ASP.NET MVC,这意味着没有办法解决它。唯一的解决方案是手动禁止匹配这些名称的URL,这些名称后跟句点和随机字符。

答案 2 :(得分:4)

由于类似的原因,StackOverflow中不能有web.config标记。

http://stackoverflow.uservoice.com/pages/1722-general/suggestions/98871-web-config-tag-404-error

答案 3 :(得分:0)

出于另一个类似的原因,你不能有带点和斜线的网址 Semantic urls with dots in .net