【问题标题】:Get all 404s to work on IIS6让所有 404 在 IIS6 上工作
【发布时间】:2010-12-24 01:22:28
【问题描述】:

我遵循了有关如何设置 404 的建议:

http://www.andornot.com/about/developerblog/archive/2009_10_01_archive.aspx

及相关:

Best way to implement a 404 in ASP.NET

来自 Global.asax:

protected void Application_Error(Object sender, EventArgs e)
{   
    Exception exception = Server.GetLastError();
    if (exception is HttpUnhandledException)
    {
        if (exception.InnerException == null)
        {
            Server.Transfer(string.Format("~/Error.aspx", false));
            return;
        }
        exception = exception.InnerException;
    }

    if (exception is HttpException)
    {
        if (((HttpException)exception).GetHttpCode() == 404)
        {
            Server.ClearError();
            Server.Transfer("~/404.aspx", false);
            return;
        }
    }

    if (Context != null && Context.IsCustomErrorEnabled)
    {
        Server.Transfer(string.Format("~/Error.aspx"), false);
    }

}

并且来自 Web.config:

<customErrors mode="On"/>

在测试(VS2010)时它在本地运行良好,但在生产中(ISS6)它只适用于 aspx 页面。 http://mysite.se/foo.js 给我 ISS 404 页面。 ("找不到页面")

我错过了什么?

【问题讨论】:

    标签: asp.net iis-6 http-status-code-404


    【解决方案1】:

    如果您不想设置通配符映射,或者让 ASP.NET 处理您的所有静态文件(通常性能可能会说您不这样做),您需要配置 IIS 6 以将 404 发送到 aspx处理错误的页面。

    1. 打开 IIS 管理器,浏览到相关站点,右键单击它,然后选择属性。
    2. 打开“自定义错误”选项卡。
    3. 向下滚动到 404,选择它,然后按“编辑...”。
    4. 将消息类型更改为 URL 并将其指向您服务器上存在的文件(即“/404.aspx”)。

    第 4 点是关键 - 它需要指向一个存在的文件,否则 IIS 将恢复为默认值。

    【讨论】:

      【解决方案2】:

      Web.Config 中指定的 404 处理程序仅处理由 ASP.NET 运行时处理的文件,包括 JavaScript 文件在内的所有其他文件将由 IIS 设置中指定的 404 页面处理。这就是您看到 IIS 为 http://mysite.se/foo.js 生成错误消息而不是在 Web.Config 的自定义错误部分中指定的错误消息的原因。

      但是,您可以将这些文件类型映射到 aspnet_isapi.dll 以让您的自定义错误页面处理它们。

      1. 打开 IIS 管理器
      2. 选择您的网站
      3. 右键单击,在上下文菜单中 选择属性
      4. 在扩展列中找到 .aspx,双击并复制 aspnet_isapi.dll 的完整路径。它 应该是这样的 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\« aspnet_isapi.dll
      5. 单击添加并将路径粘贴到可执行文件框中
      6. 在扩展框中输入 .html
      7. 确保检查文件是否存在 未检查
      8. 关闭所有对话框

      更多信息请参见here

      【讨论】:

        猜你喜欢
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多