我需要确定网站根目录的实际文字路径。该应用程序可能会加载到其他服务器上,并且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将抛出错误 “Class System.Web.HttpRuntime在指定的程序集列表中找不到。包含该类的程序集必须提供给程序集属性”。使用dotNet获取IIS Web根路径
根据微软的MSDN库,符合下列条件: 的httpRuntime 类命名空间:System.Web程序 集:System.Web(在System.Web.dll中)
我做了什么:
- 编辑的类定义为“Web.HttpRuntime”和“的httpRuntime”
- 打来电话,倾倒
<cfset domainClass = createObject("dotnet","System.appDomain","c:\windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll")>
证明环境和方法
环境: 服务器在封闭的网络上,互联网 的ColdFusion 10更新14 /多个实例 的Windows 2008R2没有连接与IIS7 的Microsoft .NET Framework 4.5.1安装
难道我也许缺少的另一个组件这一个取决于?我不是dotNet的专家,所以我可能会错过一些非常基本的东西,在这里。任何意见将不胜感激。
您可以使用CGI变量。看到这里https://wikidocs.adobe.com/wiki/display/coldfusionen/CGI+environment+(CGI+Scope)+variables – 2014-10-27 13:24:25
更新:谢谢,TechMark2K。油滑的诡计。虽然TechMark2K是正确的,但我最初选择.NET解决方案的原因是,如果可能的话,应用程序需要完全可移植。实际的Web根目录可以在任何地方,应用程序目录可以是Web根目录或子目录或Web服务器虚拟目录。 ColdFusion将只知道它自己的应用程序根目录和内部Web根目录位置。我需要得到IIS7所看到的web根目录,所以我可以迭代路径并设置变量。据我所知,唯一的方法是调用.NET框架。 – user1172456 2014-10-28 11:40:51
Leigh:我试过旧版本,但得到相同的结果错误。 – user1172456 2014-10-30 11:40:17