gpt4 book ai didi

asp.net - web.config 不转发到非 .aspx 页面上的 404 错误页面

转载 作者:行者123 更新时间:2023-12-04 01:08:19 24 4
gpt4 key购买 nike

目标

我希望所有丢失页面的 URL 都转发到我的 404 页面,该页面位于我的根目录中,名称为 404error.aspx
问题

到目前为止,只有带有 .aspx 的 URL。将工作。例如,如果您输入 4error.aspx您将被重定向到错误页面。

/404error.aspx?aspxerrorpath=/4error.aspx

背景

我不是 .NET 开发人员,所以我刚刚接手了这个使用经典 .aspx 的项目。 .所以我没有使用任何 Microsoft 产品在模板或框架中构建任何这些。我只是在 Sublime 文本中编码。

我已经研究过的
  • 404 Redirecting for non aspx pages - 那里的答案不完整或不起作用。
  • 404 does not append aspxerrorpath for non aspx pages - 但这和我想要的有点不同。

  • 我查看了在 Google 上找到的许多文章,但没有一个完整的示例可以实际工作。

    代码

    这是我在 web.config 中开始的完整代码

    网页配置
    <configuration>
    <system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
    <globalization
    fileEncoding="utf-8"
    requestEncoding="utf-8"
    responseEncoding="utf-8"
    culture="en-US"
    uiCulture="de-DE"
    />
    </system.web>
    </configuration>

    我还从微软找到了这个例子(404error.aspx 是我的修改)
    http://msdn.microsoft.com/en-us/library/vstudio/bb397417%28v=vs.100%29.aspx

    web.config (2)
    <configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
    <compilation debug="true" />

    <!-- Turn on Custom Errors -->
    <customErrors mode="On"
    defaultRedirect="/404error.aspx">
    <error statusCode="404" redirect="/404Error.aspx"/>
    </customErrors>

    </system.web>
    </configuration>

    这也没有处理没有 .aspx 的页面。

    然后我尝试了这个例子

    web.config (3)
    <?xml version="1.0"?>
    <configuration>
    <system.web>
    <customErrors mode="RemoteOnly" defaultRedirect="~/404error.aspx" />
    <error statusCode="404" redirect="~/404error.aspx" />
    <globalization
    fileEncoding="utf-8"
    requestEncoding="utf-8"
    responseEncoding="utf-8"
    culture="en-US"
    uiCulture="de-DE"
    />
    </system.web>
    <system.webServer>
    <httpErrors>
    <remove statusCode="401" subStatusCode="-1" />
    <remove statusCode="403" subStatusCode="-1" />
    <remove statusCode="404" subStatusCode="-1" />
    <remove statusCode="500" subStatusCode="-1" />
    <!-- full url when responsemode is Redirect -->
    <error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
    <!-- local relative path when responsemode is ExecuteURL -->
    <error statusCode="403" path="~/404error.aspx" responseMode="ExecuteURL" />
    <error statusCode="404" path="~/404error.aspx" responseMode="ExecuteURL" />
    <error statusCode="500" path="~/404error.aspx" responseMode="ExecuteURL" />
    </httpErrors>
    <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
    </configuration>

    显然,我必须更改非 404 页面的路径,但我只是想测试这些错误。最后一个 web.config效果更差。

    你能告诉我我需要修改什么吗?我将不胜感激 <configuration>因为我一直很困惑什么去哪里。

    编辑 1

    我读到许多开发人员建议只将其设为 HTML 页面。所以现在我的页面是 404.html这是我更新的 web.config
    <configuration>
    <system.web>
    <customErrors mode="On"
    redirectMode="ResponseRewrite">
    <error statusCode="404"
    redirect="~/404.html"/>
    </customErrors>
    <globalization
    fileEncoding="utf-8"
    requestEncoding="utf-8"
    responseEncoding="utf-8"
    culture="en-US"
    uiCulture="de-DE"
    />
    </system.web>

    <system.webServer>
    <httpErrors errorMode="Custom"
    defaultResponseMode="File">
    <remove statusCode="404"/>
    <error statusCode="404"
    path="~/404.html"/>
    </httpErrors>
    </system.webServer>
    </configuration>

    最佳答案

    您需要配置<httpErrors>元素。这将配置静态文件和服务器页面的错误页面。

    您的第 3 次尝试“web.config (3)”和“Edit 1”就快到了。问题是您不能在此处使用应用程序相关路径(例如:“~/404.html”),它们必须与站点根目录相关(例如:“/404.html”)。

    <?xml version="1.0"?>
    <configuration>
    <system.webServer>
    <httpErrors>
    <remove statusCode="401" subStatusCode="-1" />
    <remove statusCode="403" subStatusCode="-1" />
    <remove statusCode="404" subStatusCode="-1" />
    <remove statusCode="500" subStatusCode="-1" />
    <!-- full url when responsemode is Redirect -->
    <error statusCode="401" path="http://foo.com/default.htm" responseMode="Redirect" />
    <!-- local relative path when responsemode is ExecuteURL -->
    <error statusCode="403" path="/404error.aspx" responseMode="ExecuteURL" />
    <error statusCode="404" path="/404error.aspx" responseMode="ExecuteURL" />
    <error statusCode="500" path="/404error.aspx" responseMode="ExecuteURL" />
    </httpErrors>
    </system.webServer>
    </configuration>

    关于asp.net - web.config 不转发到非 .aspx 页面上的 404 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798775/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com