从不继承System.Web.Ui.Page的对象获取文件的URL

时间:2009-07-09 21:02:35

标签: asp.net

我有一个对象需要驻留在我的Web应用程序根目录中的文件的URL。如果这是一个继承自System.Web.Ui.Page的对象,我只会使用httpRequest对象。但是因为这个对象不是我不确定如何得到这个网址。根据调用对象,url将是/something.htm或〜/ something.htm

有人能给我指路吗?谢谢!

-Nick

2 个答案:

答案 0 :(得分:2)

我不确定你为什么要使用HttpRequest,但你可以使用HttpContext.Current.Request,假设HttpContext.Current不为null。

答案 1 :(得分:0)

约翰说得对。您可以/应该使用HttpContext.Current.Request对象,如他所述。我认为你也在寻找只有根的Url。换句话说,如果存在页面名称或查询字符串参数,则不需要它们。

这个例程有点令人讨厌,但它应该能满足你的需要。请注意对HttpContext.Current.Request的引用。

private string UrlUpToRootWithNoPageReferenceOrQueryStringParameters()
{
    string Port = HttpContext.Current.Request.ServerVariables["SERVER_PORT"];

    if (Port == null || Port == "80" || Port == "443")
        Port = "";
    else
        Port = ":" + Port;

    string Protocol = HttpContext.Current.Request.ServerVariables["SERVER_PORT_SECURE"];

    if (Protocol == null || Protocol == "0")
        Protocol = "http://";
    else
        Protocol = "https://";

    return Protocol + Context.Request.ServerVariables["SERVER_NAME"] + Port + Context.Request.ApplicationPath;
}

有更短的方式来获得你想要的东西,但上面的例行程序将再次起作用。如果您对更多内容感兴趣,请查看Rick Strahl's Making Sense of ASP.NET Paths了解更多信息。