Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设置httpmodule以防止某些页面出现404_C#_Asp.net_Http Status Code 404_Httpmodule - Fatal编程技术网

C# 设置httpmodule以防止某些页面出现404

C# 设置httpmodule以防止某些页面出现404,c#,asp.net,http-status-code-404,httpmodule,C#,Asp.net,Http Status Code 404,Httpmodule,我目前正在开发一个.NETC web应用程序。我已经从网站上删除了几个.aspx,删除了它们,如page1.aspx、page2.aspx等 我现在要做的是创建一个http模块,当用户浏览器调用page1.aspx或page2.aspx时,它不是返回404状态码,而是返回已删除页面的相应状态码,并将用户重定向到主页,而不是错误页面 实现这一点的最佳方法是什么,是通过http模块吗?如果是,我会设置这样的模块吗?如果只有几个页面,您可以将它们保留在那里,并使用Response.StatusCode

我目前正在开发一个.NETC web应用程序。我已经从网站上删除了几个.aspx,删除了它们,如page1.aspx、page2.aspx等

我现在要做的是创建一个http模块,当用户浏览器调用page1.aspx或page2.aspx时,它不是返回404状态码,而是返回已删除页面的相应状态码,并将用户重定向到主页,而不是错误页面


实现这一点的最佳方法是什么,是通过http模块吗?如果是,我会设置这样的模块吗?

如果只有几个页面,您可以将它们保留在那里,并使用Response.StatusCode=410和一个简单的window.location=basepage

如果它是一个动态列表,可能会变大,我会将其放在您的应用程序错误处理程序中:

protected void Application_Error(Object sender, EventArgs e)
{
    if (/*requesting a deleted resource*/) 
    {
        //return status 410 and a javascript redirect
    }
}

我认为这是最好的办法。 其实很简单。把这个放到你的网络配置里

<customErrors mode="On" defaultRedirect="~/TheDefaultErrorPage.aspx"> 
    <error statusCode="404" redirect="The404ErrorPage.aspx"/> 
</customErrors>
然后,如果您愿意,还可以很容易地添加更多错误