如果找不到请求的内容,我有一个 ASP.NET 应用程序有时会重定向到 404 页面。这是这样做的:
var data = MyDatabase.RetrieveData(dataID);
if (data == null)
Response.Redirect("~/My404Page.aspx");
这对用户非常有用。但这会导致302 Found
(重定向),而不是404 Not Found
,这对于搜索爬虫来说并不理想。我想返回一个 404 状态代码并仍然向用户显示有用的内容。
著名的互联网上最尴尬的 404 页面就是这样做的;如果您在该域中输入错误的 URL 并使用 Fiddler 之类的内容查看结果,您实际上会得到一个 404 代码。
我试过这个:
Response.StatusCode = 404;
这会正确设置 404 代码,但会继续呈现页面。我也试过这个:
throw new HttpException(404, "Not Found");
但这与任何其他未捕获的异常(通过重定向302
到服务器错误页面)的作用相同。
我已经找到了一种通过一些自定义逻辑在我的应用程序中解决此问题的方法,这些逻辑涉及自己设置状态代码并编写 JavaScript 重定向到响应。但我想要的是一种在代码隐藏中表达该请求应该停止处理并重定向到 404 错误页面(我相信可以在 IIS 或 web.config 中指定)的方法。这可能吗?