最近常看到有人問到如何透過 ASP 產生 Word 文件、Excel 檔或是啟動自製元件,這些說明在 MSDN 中均可找到,我只整理我喜歡的慣用做法,當然有其他方法,不過個人喜好不同,你也可以自己試試。
在介紹方法之前,有些要先說,在 ASP 直接包大物件效能很差,若要存取大型物件,比如說 Word 或是 Excel ,最好自己另外開發 DCOM 來存取,當另行開發 DCOM 時,下面文章要對應的就是你的 DCOM 權限設定,而自行開發 DCOM 可以自行定義權限,就可以增加權限控管或是減少遙控功能以避免產生危害。
基本上通常不能執行的錯誤訊息是權限不足,那就是怎樣調權限的問題,比如說如下圖:
當你在開發階段時,若是發生沒有使用權限: 'CreateObject' 這類錯誤,而其他元件又可以用,主要是這個目標元件權限要修正。
首先是預設權限,如果 IIS 採用匿名存取,則會使用 IUSR_servername 的權限 (servername 是你的電腦名,之後不再重複說明) ,因為他是屬於 Guests 群組,所以可能會在你的電腦上不能寫入檔案,比如說 Word 開啟時,會在工作目錄及暫存目錄開啟暫存檔,而 IUSR_servername 在你電腦上是沒有暫存目錄的,所以問題會更複雜。解決不能沒有權限存取的方法主要分成兩種,一種是調高 IUSR_servername 的權限,使他在 Server 電腦上能存取檔案,但是我不喜歡,一方面是危險,一方面還要吃硬碟等。另一種方式是替你的目標元件建立代理使用者,建立代理使用者就是在系統中建立或挑選一個足夠權限的使用者,以他的名義執行該元件,管理的時候,最好另建立一個,我主要是開發,所以就選我的帳號來執行。設定步驟如下:
這個範例是透過支援 Automation 的軟體繪製等雨量線,需由 ASP 產生純文字檔當輸入檔,所以才需要設定這個屬性。相關權限設定完畢後,系統就可以執行你所要的元件了。如下圖等雨量線已可繪製: