今天挺高興,項(xiàng)目終于上線使用。只是上線之前遇到的問題折磨得人精疲力盡。。。不過總算解決了。。在這把問題說出來,希望對有需要的朋友提供些幫助~~
項(xiàng)目:DOTNET項(xiàng)目,C#開發(fā),主要功能是通過COM組件訪問遠(yuǎn)程接口。
運(yùn)行環(huán)境:Windows 2003 Server + IIS6.0 + .Net 1.1
問題:COM組件及系統(tǒng)在WINDOWS2000操作系統(tǒng)下都能正常使用,但遷移到WIN2003下,在程序調(diào)用組件時(shí)進(jìn)程卡住了,有時(shí)會返回服務(wù)器出現(xiàn)意外情況的錯(cuò)誤~
原因分析:首先,組件在其它操作系統(tǒng)下通過,說明組件應(yīng)該沒問題;注冊COM組件及DOTNET項(xiàng)目引用方法均正確,而錯(cuò)誤出現(xiàn)在調(diào)用組件這一步,而COM組件的功能就是通過ip地址及端口訪問遠(yuǎn)程接口,這里注意有一個(gè)遠(yuǎn)程網(wǎng)絡(luò)連接的工作;上網(wǎng)搜索類似問題,大部分文章都是組件的權(quán)限問題,我也根據(jù)文章所寫設(shè)置了組件,IIS訪問用戶等的權(quán)限,都給予了最大權(quán)限,結(jié)果還是不行。。快崩潰了。。
解決方法:被這個(gè)問題折磨了幾天之后,公司聯(lián)系了微軟客戶支持,micro給了個(gè)方法,查看下IIS6.0里的應(yīng)用程序池的安全性權(quán)限。查看了下,在IIS里的應(yīng)用程序池屬性中,“標(biāo)識”標(biāo)簽下有個(gè)默認(rèn)的安全性帳戶“網(wǎng)絡(luò)服務(wù)”即NetWork Service。Network Service 是 Windows Server 2003 中的內(nèi)置帳戶,其屬于IIS_WPG 組,IIS_WPG 的成員具有適當(dāng)?shù)?NTFS 權(quán)限和必要的用戶權(quán)限,按微軟網(wǎng)站上的文章所說,Network Service 帳戶具有充當(dāng) IIS 6 工作進(jìn)程的進(jìn)程標(biāo)識的充足權(quán)限,以及具有訪問網(wǎng)絡(luò)的權(quán)限。但不知道為什么,這里的NetWork Service權(quán)限不夠,造成不能調(diào)用組件訪問遠(yuǎn)程接口。解決的方法就是將IIS_WPG帳戶設(shè)置為讀取與執(zhí)行、列出文件夾目錄、讀取,而NETWORK SERVICE則需要完全控制權(quán)限。根據(jù)以上方法,我把NetWork Service賦于到Administrator組 ^_|| ,重啟IIS,再運(yùn)行程序,OK,正常調(diào)用組件了~~
因此如果有朋友再有碰到調(diào)用COM組件不能用時(shí),考慮一下應(yīng)用程序池的權(quán)限~~
參考以下文章: http://www.microsoft.com/china/technet/community/columns/insider/iisi1203.mspx
http://flyskywlh.VEVb.com/archive/2006/07/07/445508.html
新聞熱點(diǎn)
疑難解答
圖片精選