IIS虚拟目录和ASP.NET目录路径 问题

IIS虚拟目录和ASP.NET目录路径 问题,asp.net,iis,relative-path,Asp.net,Iis,Relative Path,我遇到了一个典型的虚拟目录困境,即ASP.Net应用程序上有一些路径,而应用程序部署在IIS虚拟目录中。那么所有与“web根目录”(f.i.,“/images”)相关的路径都不起作用,因为应用程序位于虚拟目录路径中 解决方案 A.将“图像”文件夹设为虚拟目录。这样“/图像”将始终存在 B.使用“/Imagenes”作为我的图像源。这在IIS中非常有效,但我在设计时和调试时都看不到它 此解决方案还包括以下说明: System.Web.VirtualPath实用性.ToAbsolute Reso

我遇到了一个典型的虚拟目录困境,即ASP.Net应用程序上有一些路径,而应用程序部署在IIS虚拟目录中。那么所有与“web根目录”(f.i.,“/images”)相关的路径都不起作用,因为应用程序位于虚拟目录路径中


解决方案 A.将“图像”文件夹设为虚拟目录。这样“/图像”将始终存在

B.使用
“/Imagenes”
作为我的图像源。这在IIS中非常有效,但我在设计时和调试时都看不到它

此解决方案还包括以下说明:

  • System.Web.VirtualPath实用性.ToAbsolute
  • ResolveClientUrl
  • Request.ApplicationPath
C.使用当前控件/页面的相关路径。这就是确切地知道images文件夹相对于我当前文件的位置(无需转到根目录)。因此,我会使用诸如“”、“../”、“../…”等内容


我正在寻找的解决方案 我不喜欢这些解决方案。我希望在web.config文件或IIS中找到解决方案。我在web.config文件中编写的一些conf指令告诉IIS我的应用程序实际驻留的位置(虚拟目录)

有什么建议吗?

您是否可以使用波浪线(~)作为路径

~指虚拟Web应用程序的根


例如~/images。

如果只是客户端的css文件,则使用url指令使路径相对于样式表而不是页面:

h1#title { background: url('dog.gif') no-repeat 0 0; } 
此外,如果您使用的是asp.net mvc,则您可以访问:

<script src="<%= Url.Content("~/scripts/new.js") %>" type="text/javascript"></script>


或者,对于非服务器端img元素,您可以使用“/”字符表示根目录,如@klabranche,波浪号(~)用于服务器端控件,仅在服务器端代码中可用()@DavidAndres,斜杠“/”假定您的应用程序位于网站根目录中(不用于虚拟目录)。()>一个站点根相对路径,它是根据站点根(而不是应用程序根)解析的。@delamo-我确实说过你可以在哪里…我知道你正在寻找一种替代方法来处理你列出的路径。我只是想确保你至少在你可以做的地方做了你可以做的事情。:@klabranche-抱歉,谢谢。事实上,我在几个控件中使用了它。但我想在aspx页面和css文件中解决这个问题:/@daelmo:你是对的。图像需要放在inetpub\wwwroot\images中,或者img元素的src属性应该更新为“/virtual directory/images/back.png”,感谢您的更新。我将此解决方案与“主题和皮肤”结合使用,不带任何路径,将图像与样式表并排放在主题目录中。