【问题标题】:Get the IIS Web Root Path using dotNet使用 dotNet 获取 IIS Web 根路径
【发布时间】:2016-02-12 14:57:31
【问题描述】:

我需要确定网站根目录的实际文字路径。应用程序可能会加载到其他服务器上,并且 Web 根目录可能位于不同的位置,例如“E:\projects\development\wwwroot”或“f:\webroot”。使用 getDirectoryFromPath(expandPath("/")) 返回 c:\ColdFusion10\testInstance\wwwroot 的 ColdFusion Web 根目录。我需要 IIS7 Web 根路径,例如 c:\inetpub\wwwroot。为此,我尝试将 .net 类 HttpRuntime 称为 <cfset httpClass = createObject("dotnet","System.Web.HttpRuntime","c:\windows\Microsoft.NET\Framework\v4.0.30319.System.Web.dll")> 以获取 AppDomainAppPath 属性。 ColdFusion 抛出错误 “在指定的程序集列表中找不到类 System.Web.HttpRuntime。必须将包含该类的程序集提供给程序集属性”。

根据微软的 MSDN 库,以下是正确的: HttpRuntime 类 命名空间:System.Web 程序集:System.Web(在 System.Web.dll 中)

我做了什么:

  1. 将类定义编辑为“Web.HttpRuntime”和“HttpRuntime”
  2. 调用并转储<cfset domainClass = createObject("dotnet","System.appDomain","c:\windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll")> 以证明环境和方法

环境: 服务器在一个封闭的网络上,没有连接到互联网 ColdFusion 10 更新 14/多个实例 带有 IIS7 的 Windows 2008r2 已安装 Microsoft .NET Framework 4.5.1

我可能错过了这个依赖的另一个程序集吗?我不是 dotNet 方面的专家,所以我可能在这里遗漏了一些非常基本的东西。任何建议将不胜感激。

【问题讨论】:

  • 您可以使用 CGI 变量。见这里wikidocs.adobe.com/wiki/display/coldfusionen/…
  • 更新:谢谢,TechMark2K。狡猾的把戏。尽管 TechMark2K 是正确的,但我最初选择 .NET 解决方案的原因是,如果可能的话,应用程序需要完全可移植。实际的 Web 根目录可能在任何地方,应用程序目录可能是 Web 根目录或子目录或 Web 服务器虚拟目录。 ColdFusion 只会知道它自己的应用程序根目录和内部 Web 根目录的位置。我需要获取 IIS7 所看到的 Web 根目录,这样我就可以遍历路径并设置变量。据我所知,唯一的方法是调用 .NET 框架。
  • Leigh:我尝试了旧版本,但得到了相同的错误结果。
  • @user1172456 - 很奇怪。我假设您正在运行64位?顺便说一句:S.O.不会通知您发表新评论的人,除非您:a) 在他们的“答案”下方发表评论或 b) 在他们的用户名前添加 @ 符号:)

标签: .net iis coldfusion coldfusion-10


【解决方案1】:

我看到您的网络根文件夹名为wwwroot,那么您可以这样做:

<cfset rootDir = left(getBaseTemplatePath(), len(getBaseTemplatePath()) - find(reverse('wwwroot'), reverse(getBaseTemplatePath())) + 2)>

<cfdump var="#rootDir#" />

【讨论】:

    【解决方案2】:

    我尝试在我的环境中遇到同样的错误。我猜这是因为我的文件系统上有两个版本的 System.Web.dll: Microsoft.NET\Framework\v2.0.50727 和 Microsoft.NET\Framework\v4.0.30319\ 。我更改了指向旧版本的路径,它工作正常:

     httpClass = createObject("dotnet"
              , "System.Web.HttpRuntime"
              , "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2019-07-25
      • 1970-01-01
      • 2019-08-02
      • 2017-01-09
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多