开发者

How do I request a resource (relative path) from the current server?

开发者 https://www.devze.com 2022-12-08 17:22 出处:网络
If I have a relative path that I need to get from the current server. The following does not work because it is not a valid URI.

If I have a relative path that I need to get from the current server. The following does not work because it is not a valid URI.

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

I believe that the easiest way would be to put the path in the web.config, however this is easily broken by forgetting to update the config when the application 开发者_Go百科is moved to another server. Is there a better way than?

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


Well, you can always use something like:

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;
}

Using these various Request object properties will give you your current domain name onto which you can append your sub-folders for your resource.

Request.Url.Scheme is the http / https part of the URL, System.Uri.SchemeDelimiter is the :// part, and the Request.Url.Host will be your actual host name (ie. example.com).
If your site is running on a non-standard port, the calls to Request.Url.Port will add that into the URL "domain name" also.
Note that this is not bullet-proof code, as it assumes your (for example) running SSL (https) on the default port of 443

If you need actual physical file paths, you can use Server.MapPath to retrieve the physical file path of the "root" of your ASP.NET application, and append your sub-folders from there.

See also: ASP.NET Web Site Paths

0

精彩评论

暂无评论...
验证码 换一张
取 消