【问题标题】:IIS virtual directory and ASP.NET directory pathsIIS 虚拟目录和 ASP.NET 目录路径
【发布时间】:2010-11-29 18:34:30
【问题描述】:

问题

我遇到了典型的虚拟目录困境,因为您的 ASP.Net 应用程序上有一些路径,并且您将应用程序部署在 IIS 虚拟目录中。然后所有与“web root”相关的路径(例如,“/images”)都不起作用,因为应用程序位于虚拟目录路径中。


解决方案

A. 将“images”文件夹设为虚拟目录。这样“/images”就会一直存在。

B. 使用"<%=Request.ApplicationPath%>/Imagenes" 作为我的图片来源。这在 IIS 中效果很好,但我在设计时和调试时都看不到它。

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

  • System.Web.VirtualPathUtility.ToAbsolute
  • 解析ClientUrl
  • Request.ApplicationPath

C. 使用当前控件/页面的相对路径。这是确切知道图像文件夹相对于我当前文件的位置(无需转到根目录。所以我会使用“”、“../”、“../../”等内容。


我正在寻找的解决方案

这么说。我不喜欢这些解决方案。我想在 web.config 文件或 IIS 中找到解决方案。我在 web.config 文件中编写的一些配置指令告诉 IIS 我的应用程序实际驻留在哪里(虚拟目录)。

有什么建议吗?

【问题讨论】:

    标签: asp.net iis relative-path


    【解决方案1】:

    您是否在可以使用的路径中使用波浪号 (~)?

    ~ 指的是虚拟 Web 应用程序的根目录....

    ~/images 例如。

    【讨论】:

    • 或者,对于非服务器端的 img 元素,您可以使用“/”字符来指代根,如 。
    • @klabranche,波浪号 (~) 用于服务器端控件,仅可用于服务器端代码 (msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres,斜线“/”假定您的应用位于 Web站点根目录(不适用于虚拟目录)。 (msdn.microsoft.com/en-us/library/ms178116.aspx) > 站点根目录的相对路径,根据站点根目录(而不是应用程序根目录)解析。
    • @dealmo - 我确实说过你可以在哪里......我知道你正在寻找你列出的替代方法。我只是确保你至少已经尽你所能。 :)
    • @klabranche - 对不起,谢谢。事实上,我在几个控件中使用了它。但我想在 aspx 页面和 css 文件中解决它:/
    • @daelmo:你是对的。图片需要放在inetpub\wwwroot\images 或者img 元素的src 属性应该更新为“/virtual directory/images/back.png” 感谢更新。
    【解决方案2】:

    如果它只是用于客户端的 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>
    

    【讨论】:

    • 我在没有任何路径的情况下结合“主题和皮肤”使用此解决方案,将图像与样式表并排放置在主题目录中。
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2011-06-15
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多