2012-01-17 66 views
1

我們正在努力驗證我們的應用程序是否在Windows Server 2008上部署,並且存在一些配置問題。在IIS7上的ASP-Classic中創建Word.Application時出錯

下面的代碼引發互操作錯誤:

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-classic應用程序。我已經檢查了Ogawa的解決方案,需要systemprofile有一個Desktop文件夾,並且要配置AppPool來加載用戶配置文件。 Word 97-2003文檔DCOM對象被配置爲與網站的應用程序池相同的用戶運行。啓動和激活「,」訪問權限「和」配置權限「。

編輯補充: 交互方式運行時,這個腳本(下CSCRIPT或WScript的運行)成功創建一個Word.Application並提取用戶名:

var wordobj = new ActiveXObject("Word.Application"); 
WScript.echo(wordobj.UserName); 
wordobj.quit(); 

顯然不是Error creating Word object in classic ASP on IIS7重複,因爲我們越來越CreateObject for Word.Application上的錯誤,而不是在打開文檔時。

服務器是Windows 2008 x86。

我在配置時錯過了什麼?

+0

您確認一個簡單的交互.VBS從同一賬戶在同一臺​​機器上運行,可以創建對象? – AnthonyWJones 2012-01-24 13:39:48

+1

@AnthonyWJones是的,交互式場景工作正常。 (使用jscript,但原理是一樣的,請參閱編輯 – 2012-01-24 14:34:43

+0

在這篇文章中有一些關於服務器安全權限的討論可能會有所幫助(向下翻頁)http://forums.devx.com/showthread.php?t = 12914 – Dee 2012-01-21 19:57:52

回答

3

燃燒後支持事件從我們的MSDN訂閱,這是我們發現:

在IIS7,你必須在兩個程序池和應用程序的匿名身份驗證配置進程標識。如果您運行混合的ASP和ASP.NET,則可以配置匿名身份驗證(在站點的身份驗證詳細信息中)以指向AppPool的身份,或使用特定的用戶名/密碼組合。

匿名身份驗證默認是IUSR,而不是應用程序池標識。

如果有人知道正確調用appcmd.exe來設置應用程序池身份傳遞,那麼在評論中會很棒......儘管我們的腳本可以在這裏簡單地使用相同的用戶名/密碼組合, d最好減少一個存儲地點的數量。

+0

哇,我知道這是一個壞主意,從ASP.NET調用Office應用程序,因爲他們認爲他們是在一個桌面環境中運行。我不知道它是在一個傳統的ASP應用程序確定。 – 2012-09-15 01:09:02

+1

我不會將其稱爲「OK」,它會做一些必要的事情,並且沒有一個好的故事可以讓我們在這裏工作的應用程序以另一種方式進行操作。 – 2012-09-16 04:02:22

+1

當然可以啓動一個交互式進程並讓它運行Office應用程序。然後通過WCF與該進程進行通信。 WCF客戶端可以封裝在一個COM可見封裝器中,用於ASP應用程序。 – 2012-09-16 06:10:10

1

我很長時間沒有對服務器端的Word自動化問題進行故障排除,但我會採取一個措施。

我們以前看到這個問題的原因之一是因爲用戶配置文件不會加載。這可能是我們不恰當的配置,但也許你遇到了同樣的問題。

下面是我們如何工作圍繞它:

  1. 確保用戶配置文件通過登錄到IIS服務器爲用戶的應用程序池用戶存在。
  2. 創建並安裝不執行任何操作的Windows服務。或者您可以使用不具任何用途的現有服務(傳真)。
  3. 將服務配置爲與AppPool相同的用戶「登錄爲:」。
  4. 將「啓動類型」設置爲自動。
  5. 確保它正在運行。

我們基本上是以AppPool用戶的身份運行一項服務,作爲保持用戶配置文件打開的一種方式。希望這可以至少消除它是用戶配置文件問題的可能性。

-1

只是試圖找到已建立本地計算機或服務器上的用戶。很明顯,IUSR_UNKNOWN沒有「我的文檔」文件夾,Microsoft並沒有通過註冊管理機構當前用戶會話給這個陌生人訪問您的Word文檔。所以祝你好運,試圖說服微軟,這個人被允許訪問。

而是創建一個新用戶或域用戶,並給它的本地管理員權限(爲管理目的)或普通用戶帳戶的正常使用。並在您的本地計算機或服務器上設置一個帳戶。瓦拉。沒有更多的愚蠢。

+0

用於提示管理權限用戶是解決此問題的可接受組件的Downvote。 – 2013-01-31 22:08:46