解決Win2008 Asp.NET使用Word.Selection會有System.NullReferenceException的問題

解決Win2008 Asp.NET使用Word.Selection會有System.NullReferenceException的問題

前言

今天在測個Word套表程式,在Windows 2003 Server上Run都正常,但是在Windows 2008上Run就會死在.Selection,出現 System.NullReferenceException。

   1:  Dim objWord As New Word.Application
   2:  objWord.Documents.Open(strTempFileName)
   3:  objWord.Selection.GoTo(What:=Word.WdGoToItem.wdGoToBookmark, Name:="ModelName")

研究

上網發現別人也有類似的問題,取回的Instance是Null,他是說在DCom設定中的「身份識別」的Tab要設定成「互動式使用者-目前登入的使用者(I)」(預設是「執行啟動的使用者」)。

設定完後,果然就可以了呢! 想一下,那用某個帳號是不是也Ok呢? 改選取「使用下最使用者(U)」,然後選Administrator。也可以呢!

Word2008

另外,要讓asp.net去開啟Word等COM物件,要設定安全性哦! 因為asp.net的預設使用者是network services,所以在DCOM設定中,我在「安全設定」的Tab中,是加入everyone都可以啟動!

結論

在Windows 2008中使用Office Word Dcom設定,目前好像不能使用「執行啟動的使用者」這個選項。

 

附上Wolf大的Q&A

 

 

web系統產生word檔時,遇到下列問題:

由於發生下列錯誤,為具有 CLSID {000209FF-0000-0000-C000-000000000046} 的元件擷取 COM Class Factory 失敗: 80070005

表示Server無權限使用Word元件

A:到元件服務DCOM設定將 Word97~2003右鍵內容a安全性頁籤改為自訂,並增加Everyone將底下權限都勾選(有空的人可以去試試看只要給哪一個就好,不知道就全給)

 

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^