我在asp.net中创建页面。我创建了名为Form.aspx的WebForm。现在我想要所有请求* .htm请求加载这些页面,我将在那里做我需要的东西(也许不是最好的方法,但它可以根据我的需要工作)。所以我创建了这样的东西:
routes.MapPageRoute(null, "{file}.htm", "~/Pages/Form.aspx");
routes.MapPageRoute(null, "{folder}/{file}.htm", "~/Pages/Form.aspx");
现在,http://example.com/whatever.htm或http://example.com/whatever/whatever.htm等所有内容都会重定向到我的Form.aspx。但是这个Form.aspx本身没有任何意义。所以下面的页面是无意义的http://example.com/Pages/Form.aspx。怎么能让它无效?所以它会向我显示类似“错误HTTP 404.0 - 未找到”的内容。我想要和我写“http://example.com/doesntexist.aspx”一样的行为。我不想做任何重定向(仅当没有其他选项存在时)。到目前为止,我只尝试过这样的事情(这不起作用):
routes.MapPageRoute(null, "Pages/Form.aspx", "~/doesntexist.aspx");
它没有做任何事情......任何帮助表示赞赏。
答案 0 :(得分:1)
在Global.asax中添加以下代码:
...
protected void Application_BeginRequest(object sender, EventArgs e)
{
string requestPath = Request.RawUrl.Trim().ToLower();
HttpApplication app = sender as HttpApplication;
if (!IsLocalRequest(app.Context.Request))
{
if (requestPath.IndexOf("form.aspx") > 0)
{
throw new HttpException(404, "Error HTTP 404.0 – Not Found.");
}
}
}
// This method determines whether request came from the same IP address as the server.
public static bool IsLocalRequest(HttpRequest request)
{
return request.ServerVariables["LOCAL_ADDR"] == request.ServerVariables["REMOTE_ADDR"];
}
...