c# - 如何向当前服务器请求资源(相对路径)?

标签 c# asp.net

如果我有一个需要从当前服务器获取的相对路径。以下内容不起作用,因为它不是有效的 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 应用程序“根”的物理文件路径,并从那里附加子文件夹。

另请参阅:ASP.NET Web Site Paths

关于c# - 如何向当前服务器请求资源(相对路径)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589077/

相关文章:

c# - 找不到方法 : 'Void System.Diagnostics.Tracing.FrameworkEventSource.BeginGetResponse(System.Object, System.String)'

c# - 使用 Google 跟踪电子商务

asp.net - web.config urlmapping

asp.net - 如何在内联 if 语句中使用数据绑定(bind)记录

c# - 使用单独的 foreach 在一行中显示两个 div

c# - 工具栏中的后退按钮不起作用

c# - x64 计算机上 x86 LARGEADDRESSAWARE 程序的内核模式内存大小?

c# - 抽象/虚拟方法的通用返回类型

asp.net - 如何摆脱Ajax HTML编辑器中的复制和粘贴文本样式

javascript - 如何禁用javascript确认框服务器端验证错误按钮提交事件?