【问题标题】:ASP.NET inner directory virtual path rootASP.NET 内部目录虚拟路径根
【发布时间】:2011-06-15 06:32:41
【问题描述】:

我有两个独立的 Web 应用程序,分别名为 MainWeb 和 Reports。我想以这种方式部署它们:MainWeb 会有一个虚拟应用程序,例如指向 c:\inetpub\www\mainweb

我想将报告应用程序部署在主 web 的子目录中,使其位于 c:\inetpub\www\mainweb\reports

因此我可以将逻辑上耦合的两者结合起来,但我希望将它们放在单独的项目中以便于操作。

问题是,在我的 Reports 项目中,我使用像 ~/Style/Whatever.css 这样的结构,它在运行独立的 Reports 应用程序时工作正常,但在主 Web 中用作子目录时,它解析为 http://localhost/Style/Whatever .css 虽然我需要它来解析为 http://localhost/reports/Style/Whatever.css

所以问题是,是否有可能处理这种情况,也许可以通过某种方式修改嵌套 web.config 中 ~ 的行为?

【问题讨论】:

    标签: asp.net configuration web-config virtual-directory


    【解决方案1】:

    我以前解决过这个问题有 3 种不同的方法:

    1. 将您的样式参考从“报告”应用程序移至“主Web”应用程序。这样,您的“~”网址引用仍然有效。如果您不想移动实际文件,可以使用另一个虚拟目录来链接根目录下的资源文件夹。
    2. 创建一个名为“ApplicationPath”的静态帮助程序属性,该属性将根据托管位置返回“~/”或“~/Reports”。然后,您可以在构建 HTML 时使用此属性为您的资源返回正确的 url。
    3. 使用嵌入式资源。使用嵌入的资源,会自动为您生成 URL,因此您不必担心路径。

    【讨论】:

    • 嗨。 1.会打破我做分离的原因。 2.有些地方我不知道如何使用它,例如。引用控件:<%@ Register TagName="Ctl" TagPrefix="control" Src="~/Ctl.ascx" %>。 3.虽然我在谈论css,但我没有提到这不是唯一的问题,而是masterpage,控件引用等,对不起。不过,感谢您的建议。
    【解决方案2】:

    嗯,我有类似的情况,我不确定你的问题是什么,VirtualPathUtility 和服务器控制解决了〜当前的 Web 应用程序根。

    但也许您可以将虚拟路径放在本地报告应用程序目录的 Properties/Web 部分,picture here

    【讨论】:

    • 您好,感谢您的建议,但这对我不起作用,因为我使用的是 IIS,而且在部署时也不起作用。
    【解决方案3】:

    不是一个真正的网络人,但是报告中真实文件夹的快捷方式怎么样?

    【讨论】:

    • 其实我最后不得不这样做。我必须在 Reports 项目中创建另一个 Reports 目录并将所有内容放在那里。然后在主网络中,我创建了指向该 Reports 目录的链接并删除了 Reports 项目的虚拟应用程序。然后我将 Reports 项目中的所有内容都指向 ~/Reports/Something.xxx 而不是 ~/Someting.xxx。因此,我可以在主网站和独立网站中使用报告。感谢您的建议。
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2022-11-23
    • 2017-03-17
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多