如何使表单页无效?

时间:2014-10-28 20:58:37

标签: c# asp.net

我在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.htmhttp://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");

它没有做任何事情......任何帮助表示赞赏。

1 个答案:

答案 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"];
}

...