2010-10-18 46 views
1

我已經在Server(Win 2003)上部署了我的Web應用程序(ASP.NET/C#),以便合併Word文檔並將其打開。使用VS 2008啓動的Word Automation失敗

一切正常:一個.doc文件被添加到另一個.doc文件的底部(使用Microsoft.Office.Interop.Word庫),然後用客戶端MS Word打開。

不幸的是,在週末,另一個團隊已經在服務器上完成了一個自動更新,我還不知道進行了哪種更新(可能是Office 2003更新,但它甚至可能是服務器補丁)。

反正以後我得到在事件查看器下面的警告,當它涉及到使用的Microsoft.Office.Interop.Word庫的應用程序掛起:

檢測產品「{90110409-6000-11D3 -8CFE-0150048383C9}', 功能'OfficeUserData',組件'{4A31E933-6F67-11D2-AAA2-00A0C90F57B0}'失敗。
資源'HKEY_CURRENT_USER \ Software \ ODBC \ ODBC.INI \ MS Access Database \'不存在。

我們甚至不使用MS Access,而是使用SQL Server。 我擔心的是註冊表項已更改,現在系統無法按預期工作。

我將「NETWORK SERVICE」用戶設置爲具有訪問/啓動單詞的權限,並且它也是用於默認應用程序池的用戶。我們使用IIS6,Windows Server 2003和Word 2003.

可以提出任何解決方案? (即使我知道如果不知道已經完成了哪個更新,可能很難)。

感謝

回答

1

使用和Office組件(貝特辦事處本身或PIA的)的服務器上是不惜一切代價避免:

微軟目前並不 建議,並且不支持, 自動化的Microsoft Office從任何無人值守, 非交互式客戶端應用程序 應用程序或組件 (包括ASP,ASP.NET, DCOM和NT Service)的,因爲Office 米當Office在此 環境中運行時,會出現不穩定的行爲和/或死鎖。

Microsoft KB article

像許多人一樣,我經常用這個問題面臨並沒有簡單的解決方案。 要麼將​​某個小型服務器放在某個地方做你的辦公室的東西(並準備好定期重新啓動),要麼使用不參考PIA的第三方產品。

對不起,是壞福音的使者......

+0

感謝您的反饋意見。我也讀過,但無論如何,我們現在想用現有的解決方案來解決問題(因爲它是在生產服務器上運行的)。目前我們沒有時間移動組件並在重新測試之前重新測試它們。 – Paul 2010-10-18 12:07:03

+0

我同情,並知道它是如何> ;-) – smirkingman 2010-10-18 12:40:35

0

您應該能夠根據Windows Update來檢查,看看最近應用了哪些更新。希望你能把它們推回去,直到找到罪魁禍首。

保羅的權利。在服務器上部署使用MSOffice應用程序的解決方案可能是一個+非常冒險的主張。做好準備,並使用看門狗定時器和代碼來枚舉並殺死錯誤的WINWORD.EXE進程,如果您認爲它可能已經從深層端點下降了。這不是優雅的東西,但它可以工作。

至於第三方工具,我看了很多。如果你從頭開始構建一個文檔,大多數都可以,儘管它們具有不同級別的實現功能。 如果您可以專門使用DOCX文件,那麼OpenDoc XML SDK的工作原理非常好,而且是免費的。但它實際上操縱現有的文件很糟糕。

如果您打算將現有文檔用作模板,則選項會變得更窄。你可以使用OpenXML SDK來完成,但這非常困難。迎風報告有效,但可以是$$$。

大多數待售的「Word兼容」庫不能實現您可能需要的所有功能。

您很可能會發現使用Word對象模型API是唯一能夠爲您提供所需功能的路線。但是,一如既往YMMV。

+1

最後,我們決定避免WORD。由於我們使用Crytsal Reports和VS 2008來生成報告,因此我們將嘗試對其進行更改,以使生成的文件爲.rdf(而不是.doc)。 目標是擺脫Word,即使我們可能在格式化富文本格式時遇到問題。 – Paul 2010-10-19 09:34:42

+0

明智的解決方案! – smirkingman 2010-10-20 07:58:55