我已启用请求过滤,并将“允许未列出的文件扩展名”设置为 false。当请求任何正常路径时,包括“http://本地主机“我收到 404.7 错误 - “请求过滤模块配置为拒绝文件扩展名。”
如果我将“允许未列出的文件扩展名”设置为 true,那么网站就可以正常运行。
我知道 ”http://本地主机/“映射到 Views/Homes/Index.cshtml” 并且 .cshtml 明确被允许。
我试图找出导致该问题的文件扩展名,但在日志中找不到任何内容。我已将所有 55 种“默认”文件类型设置为允许。
答案1
尝试只使用“.”作为文件扩展名。这似乎适用于装有 ASP.NET 4 的 Windows 2008 R2 SP1 系统。
我还没有在任何地方看到过这方面的记录,但它遵循与 ASP.NET 4 / W2K8 R2 SP1 中引入的无扩展 URL 处理程序映射相同的规则(请参阅web.config 中处理程序的路径属性的含义问题)。
答案2
我认为你所尝试做的事是不可能的。
MVC 不使用文件扩展名。通过将“允许未列出的文件扩展名”设置为 false,您可以限制 IIS 仅提供列出的扩展名。由于您无法添加“无扩展名的扩展名”,IIS 会拒绝该请求。
换句话说,如果您想使用 MVC,则需要将“允许未列出的文件扩展名”设置为 true。
您不必允许“.cshtml”,甚至可以拒绝访问它,MVC 仍然有效,因为视图文件不是由 IIS 直接提供的,而是由 MVC 读取,然后通过 IIS 发送到客户端。