使用 Visual Basic IDE 在 ASP 用戶端中偵錯 COM+ 元件時發生錯誤
使用 Visual Basic IDE 在 ASP 用戶端中偵錯 COM+ 元件時發生錯誤
徵狀
當您在 Microsoft Windows 2000 電腦上,使用 Visual Basic 6.0 對 Microsoft COM+ 1.0 版元件偵錯時,如果用戶端是動態伺服器頁面 (ASP,Active Server Page),瀏覽器可能會出現下列錯誤訊息。
Server object, ASP 0178 (0x800A0005) 當檢查使用權限時 Server.CreateObject 的呼叫失敗。拒絕存取此物件。
當您在 Microsoft WindowsXP 電腦上,使用 Visual Basic 6.0 對 Microsoft COM+ 1.5 版元件偵錯時,如果用戶端是動態伺服器頁面 (ASP,Active Server Page),瀏覽器可能會出現下列錯誤訊息。
Server object, ASP 0178 (0x800A0005) 當檢查使用權限時 Server.CreateObject 的呼叫失敗。拒絕存取此物件。
這個問題只有在您從 Visual Basic 整合式開發環境 (IDE) 中,執行「COM+ 元件」時才會發生。當您在 COM+ 應用程式中執行編繹過的「COM+ 元件」時,這個問題並不會發生。
發生的原因
如果您是使用匿名存取,那麼進行驗證的使用者 (通常是 IUSR_<machinename> 帳戶) 就沒有適當權限存取「DCOM 伺服器」(本例中的 VB6.exe)。當您在 Visual Basic IDE 中對「COM+ 元件」偵錯時,執行啟動的使用者就是使用中使用者,而存取「DCOM 伺服器」的使用者是進行驗證的使用者。
因為沒有專供 VB6.exe 使用的 DCOM 項目,因此 DCOM 是使用預設權限。在 Windows 2000 與 Windows XP 中,預設只有 System 帳戶與啟動系統的使用者才有「DCOM 預設存取權限」。如果啟動系統的使用者與存取「DCOM 伺服器」的使用者不是同一位,就會發生在<徵狀>一節中所顯示的錯誤訊息。
因為沒有專供 VB6.exe 使用的 DCOM 項目,因此 DCOM 是使用預設權限。在 Windows 2000 與 Windows XP 中,預設只有 System 帳戶與啟動系統的使用者才有「DCOM 預設存取權限」。如果啟動系統的使用者與存取「DCOM 伺服器」的使用者不是同一位,就會發生在<徵狀>一節中所顯示的錯誤訊息。
解決方案
這裡有兩個建議的解決方法:
解決方法一
新增一個專供 VB6.exe 使用的 DCOM 項目到登錄中。這可以讓您設定特定的 DCOM 權限,以在 Visual Basic 中對「COM+ 元件」偵錯。1. | 在 DCOM 中建立 VB ASP 偵錯 項目:
|
||||||||||||||||||||||||||
2. | 新增 Everyone 帳戶到對 Visual Basic ASP 偵錯的 DCOM 權限中。 Windows 2000
|
解決方法 2
1. | 如果要偵錯,請在「虛擬目錄」的「應用程式保護」中,將 ASP 網頁設定為 [高 (隔離式)]。這樣可以強制 ASP 網頁使用自己的執行程序,如此可以在不影響其餘網站的情況下,變更安全性。
|
||||||||
2. | 關閉這個「虛擬目錄」的「匿名存取」,確定已選取 [整合式 Windows 驗證] 或是 [基本驗證]:
|
||||||||
3. | 如果使用的是「整合式 Windows 驗證」,那麼就執行用戶端瀏覽器,在用與 Visual Basic IDE 偵錯工作階段相同的使用者帳戶下,來存取 ASP 網頁。如果使用的是「基本驗證」,那麼為執行 Visual Basic IDE 偵錯工作階段所使用的相同使用者帳戶,輸入使用者名稱與密碼。 注意 第二個解決方法是假設 COM「預設存取權限」沒有變更過。如果「預設存取權限」沒有變更過,那麼 COM 會建立一個存取控制清單 (ACL,Access Control List),將存取權限授與 System 帳戶與「伺服器識別碼」。在這個案例中,「伺服器識別碼」是在登入執行 Visual Basic IDE 偵錯工作階段的使用者。如果 DCOM「預設存取權限」已經變更,那麼第二個解決方法要求為執行 Visual Basic IDE 的使用者帳戶,新增「預設存取權限」。這可以使用 DCOMCNFG 做到。如需詳細資訊,請參閱<其他相關資訊>一節中的「COM 安全性」連結。 |
申明
非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!
博文欢迎转载,但请给出原文连接。