ASP.NET IIS7动态404页面

ASP.NET IIS7动态404页面,asp.net,iis-7,http-status-code-404,Asp.net,Iis 7,Http Status Code 404,我正在寻找一个动态404页面的解决方案 我有一个Page404.aspx页面,它在加载查询字符串时请求查询字符串中的WebsiteID参数 假设每个网站都有一个不同的404页html存储在DB中,在每个页面加载中,它将通过查询字符串中的WebsiteID显示正确的html 现在有一件棘手的事情——如何使用当前的WebsiteID将客户端重定向到正确的404页面 希望我说得够清楚。提前感谢, Gal.如果您没有Global.asax,请为您的网站创建一个。 这假设您的网站是按目录分割的 在新的Gl

我正在寻找一个动态404页面的解决方案

我有一个
Page404.aspx
页面,它在加载查询字符串时请求查询字符串中的WebsiteID参数

假设每个网站都有一个不同的404页html存储在DB中,在每个页面加载中,它将通过查询字符串中的WebsiteID显示正确的html

现在有一件棘手的事情——如何使用当前的WebsiteID将客户端重定向到正确的404页面

希望我说得够清楚。提前感谢,


Gal.

如果您没有Global.asax,请为您的网站创建一个。 这假设您的网站是按目录分割的

在新的Global.asax文件中,应该有

protected void Application_Error(Object sender, EventArgs e)
{
   HttpContext ctx = HttpContext.Current;

   Exception exception = ctx.Server.GetLastError ();

if (ex.GetType() == typeof(HttpException))
{
   HttpException httpEx = (HttpException)ex;
   if(httpEx.GetHttpCode() == 404) 
   {

     int websiteID = FindWebsiteID(ctx.Request.Url.ToString());

     string errorPage = string.Format("~/404Page.aspx?={0}",websiteID);

     Response.Redirect(errorPage);
  }
}

public int FindWebsiteID(string url){

//parse the url for the directory and look up the id
//for the website via the directory name

}

您也可以查看更多信息。

但这会将每个错误404发送到
id=2
-如果我的网站是id 46怎么办?通过在配置文件中硬编码,你不能让它在每个网站上都是动态的。不是每个网站都有自己的配置吗?我不相信所有页面都有服务器范围的404重定向选项,我很确定它必须在每个网站上配置。我能想到的实现这一点的唯一方法是修改machine.config,但它不是动态的。所有网站都在同一个应用程序下运行-同一个web.config