gpt4 book ai didi

c# - 在 .NET 中更好地处理 404

转载 作者:行者123 更新时间:2023-11-30 19:51:07 24 4
gpt4 key购买 nike

因为你们中的一些人正在运行一些非常大的网站,所以我想听听您对处理 404 的看法。我已经尝试过使用 .Net 进行大量不同的设置,但实际上永远无法让它做正确的事情。我似乎总是得到某种重定向或错误的 header 返回,从来没有 404。这真的很痛苦,因为搜索引擎永远不会得到正确的反馈,并且尽管它们不再存在,但仍在访问这些页面。反过来,这意味着我会收到关于我知道不再存在的页面的错误报告。我也对一些请求由 .Net 处理而一些请求由 IIS 处理的方式感到很困惑。

我目前的设置如下:IIS7、ASP.Net 3.5 App。我有 web.config 设置的自定义错误页面部分,使用新的 redirectMode="ResponseRewrite"属性处理 404,转发到 html 错误页面。 IIS 配置为处理 404 并将它们转发到同一 html 页面。 Elmah 也配置为通过电子邮件报告任何此类问题。

现在,当我尝试以下地址时 http://www.severnside.com/document.aspx (一个不存在的页面),.net 处理错误并显示 200 响应。显然这应该是 404。当我尝试 http://www.severnside.com/document 时我收到正确的 404,但错误已由 IIS 处理。是否可以让 .Net 也处理这个错误,以便 Elmah 可以发现错误?

如果我能深入了解其他人用来正确处理此类情况的设置,那就太好了。

谢谢

最佳答案

您可以使用将设置正确状态代码的动态页面,而不是使用静态 html 页面:

404.aspx:

<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Response.StatusCode = 404;
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Not found
</div>
</form>
</body>

网络配置:

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="404.aspx" />
</customErrors>

关于c# - 在 .NET 中更好地处理 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582189/

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