我有一个对象需要驻留在我的Web应用程序根目录中的文件的URL。如果这是一个继承自System.Web.Ui.Page的对象,我只会使用httpRequest对象。但是因为这个对象不是我不确定如何得到这个网址。根据调用对象,url将是/something.htm或〜/ something.htm
有人能给我指路吗?谢谢!
-Nick
答案 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了解更多信息。