2013 年 11 月 17 日更新答案这是由于默认 MVC 路由仅处理 * 而不是 * 。*,即 IIS 或 IIS Express 的 applicationhost.config 有以下内容:
<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
因此,为了解决这个问题,我们可以在 web.config 中添加以下内容:
<system.webServer>
<handlers>
<add name="UrlRoutingHandler"
type="System.Web.Routing.UrlRoutingHandler,
System.Web, Version=4.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
path="/bundles/*"
verb="GET"/>
</handlers>
</system.webServer>
更多信息可以参考以下内容:
http ://weblogs.asp.net/owscott/archive/2013/01/16/handing-mvc-paths-with-dots-in-the-path.aspx
ASP.NET MVC Url Route 支持(点)
老错误答案:基本上,当 IIS 解析 URL 时,虚拟路径中通常不允许使用 DOT。这是一个链接提到了以下 URLScan AllowDotInPath 参数:默认情况下,此选项设置为 0。如果此选项设置为 0,则 URLScan 拒绝任何包含多个句点 (.) 的请求。这可以防止通过在 URL 的路径信息或查询字符串部分中放置安全文件扩展名来伪装对危险文件扩展名的请求。例如,如果此选项设置为 1,则 URLScan 可能允许对 http:// servername/BadFile.exe/SafeFile.htm 的请求,因为它会将其解释为对 HTML 页面的请求,而实际上它是对PATH_INFO 区域中带有 HTML 页面名称的可执行 (.exe) 文件。当此选项设置为 0 时,URLScan 还可能拒绝对包含句点的目录的请求。