2014-10-27 84 views
2

我需要確定網站根目錄的實際文字路徑。該應用程序可能會加載到其他服務器上,並且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中)

我做了什麼:

  1. 編輯的類定義爲「Web.HttpRuntime」和「的httpRuntime」
  2. 打來電話,傾倒<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的專家,所以我可能會錯過一些非常基本的東西,在這裏。任何意見將不勝感激。

+0

您可以使用CGI變量。看到這裏https://wikidocs.adobe.com/wiki/display/coldfusionen/CGI+environment+(CGI+Scope)+variables – 2014-10-27 13:24:25

+0

更新:謝謝,TechMark2K。油滑的詭計。雖然TechMark2K是正確的,但我最初選擇.NET解決方案的原因是,如果可能的話,應用程序需要完全可移植。實際的Web根目錄可以在任何地方,應用程序目錄可以是Web根目錄或子目錄或Web服務器虛擬目錄。 ColdFusion將只知道它自己的應用程序根目錄和內部Web根目錄位置。我需要得到IIS7所看到的web根目錄,所以我可以迭代路徑並設置變量。據我所知,唯一的方法是調用.NET框架。 – user1172456 2014-10-28 11:40:51

+0

Leigh:我試過舊版本,但得到相同的結果錯誤。 – user1172456 2014-10-30 11:40:17

回答

1

我看你的Web根文件夾名爲wwwroot那麼你可以這樣做:

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

<cfdump var="#rootDir#" />

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")