如何从当前服务器请求资源(相对路径)?

时间:2009-10-19 14:43:14

标签: c# asp.net

如果我有一个相对路径,我需要从当前服务器获取。以下内容不起作用,因为它不是有效的URI。

var request = WebRequest.Create("\path_to_resource")

我认为最简单的方法是将路径放在web.config中,但是当应用程序移动到另一台服务器时忘记更新配置很容易打破这种情况。有比这更好的方式吗?

var request = WebRequest.Create(ConfigurationManager.AppSettings["root"] + "\path_to_resource");

1 个答案:

答案 0 :(得分:3)

嗯,你可以随时使用:

private string CurrentDomain()
{
    string currDomain = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host;
    if (Request.Url.Port != 80 && Request.Url.Port != 443)
        currDomain += (":" + Request.Url.Port);
    return currDomain;
}

使用这些不同的Request对象属性将为您提供当前域名,您可以在其中附加资源的子文件夹。

Request.Url.Scheme是网址的http / https部分,System.Uri.SchemeDelimiter://部分,Request.Url.Host将是您的实际主机名(即。 example.com)。
如果您的网站在非标准端口上运行,则对Request.Url.Port的调用也会将其添加到网址“域名”中。
请注意,这不是防弹代码,因为它假设您(例如)在默认端口443上运行SSL(https)

如果您需要实际的物理文件路径,可以使用Server.MapPath检索ASP.NET应用程序“root”的物理文件路径,并从那里附加子文件夹。

另请参阅:ASP.NET Web Site Paths