如何在C#中获取网站根目录?

7
在C#代码中,我需要为一张图片编写src。有人知道如何在C#中获取网站根路径吗?我的文件夹结构是UI/Image。我发现当我使用时:
string rootpath=Page.Request.ApplicationPath;

如果在调试模式下运行应用程序,它是可以工作的。但是如果直接输入 URL 运行它,图片将不会显示。图片属性为 http://image/turnon.bmp,应该是 http://localhost/image/turnon.bmp。您有什么想法吗?
5个回答

21

一个简单的方法是使用 MapPath~ 通配符:

string imagePath = MapPath("~/image/turnon.bmp");

正如Dan Csharpster在评论中所提到的,由于Server对象暴露了MapPath方法,但它在类库中不是直接可用的,因此应该使用该命令。

string imagePath = HttpContext.Current.Server.MapPath("~/image/turnon.bmp");

11
如果您所在的类没有自动访问HttpContext,您可以按以下方式调用它: var imagePath = HttpContext.Current.Server.MapPath("~/someImage.jpg"); - Dan Csharpster
只要没有会话可用,例如在HTTPModule或HTTPHandler中,HttpContext就不可用,因此它会抛出异常。 - AaA

4

简单使用波浪号符号

因为波浪号代表您的应用程序的根目录。

所以您的图像URL将是

<img    src='<%= Server.MapPath("~/images/1.jpg") '  />

2
当我使用ASP.NET MVC2时,我遇到了同样的问题。你可以使用以下方法:
ResolveClientUrl("~/Content/Icons/loading1.gif")
or  Url.Resolve()

由于我搜索“Url”的所有结果都与无关页面有关,那么在哪里可以找到“Url”或“ResolveClientUrl”? - Jonathan Rys

2

这会返回什么? - AaA

0

这是针对服务器上网站的物理目录而不是虚拟路径根目录 在C# MVC 5控制器中,这对我有效。

string siteRoot = System.Web.VirtualPathUtility.ToAbsolute("~");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接