代码之家  ›  专栏  ›  技术社区  ›  Niels Bosma

让所有404在II6上工作

  •  1
  • Niels Bosma  · 技术社区  · 15 年前

    我遵循了关于如何设置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 把ISS404页给我。(找不到该页)

    我错过了什么?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Zhaph - Ben Duguid    15 年前

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

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

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

        2
  •  2
  •   Phaedrus    15 年前

    中指定的404处理程序 Web.Config 只处理由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 更多信息。