server|window|程式|訪問
今天挺高興,項目終於上線使用。只是上線之前遇到的問題折磨得人精疲力盡。。。不過總算解決了。。在這把問題說出來,希望對有需要的朋友提供些協助~~
項目:DOTNET項目,C#開發,主要功能是通過COM組件訪問遠程介面。
運行環境:Windows 2003 Server + IIS6.0 + .Net 1.1
問題:COM組件及系統在WINDOWS2000作業系統下都能正常使用,但遷移到WIN2003下,在程式調用組件時進程卡住了,有時會返回伺服器出現意外情況的錯誤~
原因分析:首先,組件在其它作業系統下通過,說明組件應該沒問題;註冊COM組件及DOTNET項目引用方法均正確,而錯誤出現在調用組件這一步,而COM組件的功能就是通過IP地址及連接埠訪問遠程介面,這裡注意有一個遠程網路連接的工作;上網搜尋類似問題,大部分文章都是組件的許可權問題,我也根據文章所寫設定了組件,IIS訪問使用者等的許可權,都給予了最大許可權,結果還是不行。。快崩潰了。。
解決方案:被這個問題折磨了幾天之後,公司聯絡了微軟客戶支援,micro給了個方法,查看下IIS6.0裡的應用程式集區的安全性許可權。查看了下,在IIS裡的應用程式集區屬性中,“標識”標籤下有個預設的安全性帳戶“網路服務”即NetWork Service。Network Service 是 Windows Server 2003 中的內建帳戶,其屬於IIS_WPG 組,IIS_WPG 的成員具有適當的 NTFS 許可權和必要的使用者權限,按微軟網站上的文章所說,Network Service 帳戶具有充當 IIS 6 背景工作處理序的進程標識的充足許可權,以及具有訪問網路的許可權。但不知道為什麼,這裡的NetWork Service許可權不夠,造成不能調用組件訪問遠程介面。解決的方法就是將IIS_WPG帳戶設定為讀取與執行、列出檔案夾目錄、讀取,而NETWORK SERVICE則需要完全控制許可權。根據以上方法,我把NetWork Service賦於到Administrator組 ^_|| ,重啟IIS,再運行程式,OK,正常調用組件了~~
因此如果有朋友再有碰到調用COM組件不能用時,考慮一下應用程式集區的許可權~~
參考以下文章: http://www.microsoft.com/china/technet/community/columns/insider/iisi1203.mspx