2009-09-19 256 views
18

我遇到了典型的虚拟目录的困境,该问题

你有你的ASP.Net应用程序的一些路径和部署在IIS虚拟应用程序目录。然后,所有与“web根”(f.i.,“/ images”)相关的路径都不起作用,因为该应用程序位于虚拟目录路径中。IIS虚拟目录和ASP.NET目录路径


的解决方案

A.制作的 “图像” 文件夹中的虚拟目录。这样“/ images”将一直存在。

B.使用"<%=Request.ApplicationPath%>/Imagenes"作为我的图像的来源。这在IIS中非常适用,但我无法在设计时或调试时看到它。

该解决方案还包括这些指令:

  • System.Web.VirtualPathUtility.ToAbsolute
  • ResolveClientUrl
  • Request.ApplicationPath

C.使用亲属路径的当前控制/页。这是知道确切位置的图像文件夹是相对于我目前的文件(没有去根,所以我会用像“”,“../”,“../../”等。


我在寻找

解决方案说到这里。我不喜欢这些解决方案。我想在web.config文件或IIS中的解决方案。有些CONF按照压我在网上写config文件,告诉IIS在我的应用程序实际驻留(虚拟目录)。

有什么建议?

回答

10

是你在哪里可以使用波浪号(〜)作为路径?

〜指虚拟Web应用程序的根....例如

〜/图像。

+1

替代地,对于非服务器端IMG元素,可以使用“/”字符来指根,如在。 – 2009-09-19 19:44:25

+4

@klabranche,代字号(〜)用于服务器端控件,并且只能在服务器端代码中使用(http://msdn.microsoft.com/zh-cn/library/ms178116.aspx) @DavidAndres ,斜杠“/”假设你的应用程序位于网站根目录(不适用于虚拟目录)。 (http://msdn.microsoft.com/en-us/library/ms178116。aspx) >一个站点根相对路径,根据站点根(不是应用程序根目录)解析。 – 2009-09-19 20:08:00

+1

@dealmo - 我确实说了你可以在哪里....我知道你正在寻找一种替代方法来列出你所列的人。我只是确保你至少在可以的地方完成了你所能做的。 :) – klabranche 2009-09-19 20:15:28

3

如果它只是为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> 
+0

我使用此解决方案时没有将任何路径与“主题和外观”结合使用,将图像与样式表并排放置在主题目录中。 – 2012-09-28 12:08:58