IIS上同一个网站绑定了两个主机名www.a.com和www.b.com,现在要求用www.a.com不能打开根目录下的default.ashx页面(即返回404),而www.b.com仍可正常访问。
2.解决方法
稍做修改后,default.ashx页面代码结构如下:
<%@ WebHandler Language="C#" Class="Default" %>
using System;
using System.Web;
public class Default : IHttpHandler {
public void ProcessRequest (HttpContext context) {
if (context.Request.ServerVariables["HTTP_HOST"].Equals("www.a.com", StringComparison.CurrentCultureIgnoreCase))
{
//404处理程序
context.Response.End();
}
context.Response.Write("Hello,World!");
}
public bool IsReusable {
get {
return false;
}
}
}针对404处理程序,前后有三种思路:
①.Response.Status方法
context.Response.StatusCode = 404;
context.Response.Status = "404 Not Found";
context.Response.Write("<b>404 Not Found</a>");
分析:非专业用户不认可这个404页面。
②.Response.Redirect方法(404.aspx在服务器不存在)
context.Response.Redirect("404.aspx");
分析:虽然这是一个标准的404页面,但是页面文件明显的变成了404.aspx,而不是default.ashx。
③.Response.Transfer方法(404.aspx在服务器不存在)
context.Server.Transfer("404.aspx");
分析:解决了第②个方法中存在的不足,完美的解决了ASP.NET输出404页面的问题。
评论(0)
暂无评论。