如果我有一个需要从当前服务器获取的相对路径。以下内容不起作用,因为它不是有效的 URI。
var request = WebRequest.Create("\path_to_resource")
我相信最简单的方法是将路径放入 web.config 中,但是,当应用程序移动到另一台服务器时,由于忘记更新配置,这很容易被破坏。还有更好的方法吗?
var request = WebRequest.Create(ConfigurationManager.AppSettings["root"] + "\path_to_resource");
最佳答案
嗯,你总是可以使用类似的东西:
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
是 URL 的 http/https
部分,System.Uri.SchemeDelimiter
是 ://
部分,Request.Url.Host
将是您的实际主机名(即 example.com
)。
如果您的网站在非标准端口上运行,则对 Request.Url.Port
的调用也会将其添加到 URL“域名”中。
请注意,这不是防弹代码,因为它假设您(例如)在默认端口 443 上运行 SSL (https)
如果您需要实际的物理文件路径,可以使用Server.MapPath检索 ASP.NET 应用程序“根”的物理文件路径,并从那里附加子文件夹。
关于c# - 如何向当前服务器请求资源(相对路径)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589077/