我需要确定网站根目录的实际文字路径。应用程序可以加载到其他服务器上,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中)
我做了什么:
<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的专家,所以我可能会遗漏一些非常基本的东西。任何建议将不胜感激。
答案 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")