使用dotNet获取IIS Web根路径

时间:2014-10-27 11:03:32

标签: .net iis coldfusion coldfusion-10

我需要确定网站根目录的实际文字路径。应用程序可以加载到其他服务器上,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。必须将包含该类的程序集提供给程序集属性”。

根据Microsoft的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")>以证明环境和方法
  3. 环境: 服务器在封闭的网络上,没有连接到互联网 ColdFusion 10更新14 /多个实例 带有IIS7的Windows 2008r2 安装了Microsoft .NET Framework 4.5.1

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

2 个答案:

答案 0 :(得分:1)

我看到您的网络根文件夹名为wwwroot,然后您可以执行此操作:

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

<cfdump var="#rootDir#" />

答案 1 :(得分:0)

我尝试在我的环境中遇到同样的错误。我猜这是因为我的文件系统上有两个版本的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")