[英]Error creating Word.Application in ASP-Classic on IIS7
我們正在努力驗證我們的應用程序是否可以在Windows Server 2008上進行部署,並且存在一些配置問題。
以下代碼引發互操作錯誤:
On Error Resume Next
Set WordApp = Server.CreateObject("word.application")
If Err.number <>0 Then
SetErrorDesc ErrorDesc, "Unable to instantiate word. (" & err.Description & ")<br>"
SetErrorStatus ErrorStatus,True
End If
err.Description中返回的錯誤信息為:
006~ASP 0178~Server.CreateObject Access Error~The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
該站點被配置為對其應用程序池使用特定的用戶帳戶。 該站點是ASP.Net和ASP經典應用程序的混合模式。 我已經檢查了Ogawa解決方案,該解決方案要求systemprofile具有一個Desktop文件夾,並且需要配置AppPool以加載用戶概要。 Word 97-2003文檔DCOM對象配置為以與站點的應用程序池相同的用戶身份運行。 用戶添加的具有完整權限集的啟動和激活,訪問權限和配置權限。
編輯添加:交互式運行時,此腳本(在cscript或wscript下運行)成功創建Word.Application並提取用戶名:
var wordobj = new ActiveXObject("Word.Application");
WScript.echo(wordobj.UserName);
wordobj.quit();
顯然,這與在IIS7上的經典ASP中創建Word對象時出錯不重復,因為我們在CreateObject for Word.Application而不是在打開文檔時遇到了錯誤。
該服務器是Windows 2008 x86。
我在配置此功能時錯過了什么?
在刻錄了來自我們的MSDN訂閱的支持事件之后,我們發現了以下內容:
在IIS7上,必須在AppPool和應用程序的匿名身份驗證中都配置進程標識。 如果您運行的是ASP和ASP.NET的混合版本,則可以配置匿名身份驗證(在站點的身份驗證詳細信息中)以指向AppPool的身份,或使用特定的用戶名/密碼組合。
匿名身份驗證的默認值為IUSR,而不是應用程序池標識。
如果有人知道可以正確調用appcmd.exe來設置應用程序池標識通過,則在注釋中會很有用....盡管我們的腳本可以在此處簡單地使用相同的用戶名/密碼組合,但最好是將其存儲位置減少一倍。
很長時間以來,我不必對服務器端Word自動化問題進行故障排除,但我會對此進行介紹。
我們曾經看到此問題的原因之一是因為用戶配置文件無法加載。 在我們看來,這可能是不正確的配置,但也許您遇到了同樣的問題。
這是我們的解決方法:
本質上,我們以AppPool用戶身份運行服務,以保持用戶個人資料處於打開狀態。 希望這至少可以消除它是用戶配置文件問題的可能性。
請檢查以下由Ogawa回答的鏈接,該鏈接通過創建文件夾對我來說就像是一種魅力
C:\\ Windows \\ System32 \\ config \\ systemprofile \\ Desktop
只需嘗試查找已在本地計算機或服務器上設置的用戶即可。 顯然IUSR_UNKNOWN沒有“我的文檔”文件夾,並且Microsoft尚未授予該陌生人通過注冊表當前用戶會話訪問您的Word文檔的權限。 真是太幸運了,試圖說服微軟允許該人員訪問。
而是創建一個新用戶或一個域用戶,並為其授予本地管理員訪問權限(出於管理目的)或一個常規用戶帳戶以正常使用。 並在您的本地計算機或服務器上為他設置一個帳戶。 瓦拉。 不再愚蠢了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.