【问题标题】:How can I make www.mywebapp.com/bin return a 404 in ASP.NET MVC?如何让 www.mywebapp.com/bin 在 ASP.NET MVC 中返回 404?
【发布时间】:2010-03-24 08:11:35
【问题描述】:

我正在使用 ASP.NET MVC 开发 Web 应用程序,并部署到 IIS 7。我在这些目录中隐藏了带有 web.config 文件的 Files 和 Views 目录(它们只返回正常的 404)。

但是,我无法让 web.config 方法隐藏我的 bin 目录。当我访问 www.mywebapp.com/bin 时,我得到了一个带有此消息的过于暴露的页面:

HTTP 错误 404.8 - 未找到

请求过滤模块配置 拒绝 URL 中的路径 包含一个 hiddenSegment 部分。

该页面显示了我的部分目录结构。我只希望它像 Files 和 Views 目录一样返回我的 404 页面。我怎样才能得到这种行为?

【问题讨论】:

    标签: asp.net-mvc iis-7


    【解决方案1】:

    更好的选择是使用相同的、更用户友好的错误页面来处理 404 和 404.8 错误,该页面不会显示精确的错误代码。您可能还希望以相同的方式处理 403 错误(可能还有其他 SO 用户会建议的其他错误)。

    为此,您需要使用 web.config 中的 元素。

    【讨论】:

      【解决方案2】:

      我能够通过在我的 ~/Files 目录中添加一个小的 web.config 文件来解决这个问题,该文件拒绝所有通过网络进行探索的尝试。 web.config 与 ASP.NET MVC 默认放在 Views 目录中的非常相似:

      <?xml version="1.0"?>
      <configuration>
        <system.web>
          <httpHandlers>
            <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
          </httpHandlers>
        </system.web>
      
        <system.webServer>
          <validation validateIntegratedModeConfiguration="false"/>
          <handlers>
            <remove name="BlockViewHandler"/>
            <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
          </handlers>
        </system.webServer>
      </configuration>
      

      【讨论】:

        【解决方案3】:

        我已针对 global.asax 中的路径问题进行错误处理。然后我检查一下错误是什么,在你的情况下是 404,如果是 404,我将它们重定向到 /Home/Index。

        如果这是另一个错误,我会直接访问我的错误控制器并在那里处理错误。

        我希望这对你有帮助。如果你想要代码,请告诉我。

        【讨论】:

          猜你喜欢
          • 2011-02-26
          • 2011-08-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多