今天挺高興,項目終于上線使用。只是上線之前遇到的問題折磨得人精疲力盡。。。不過總算解決了。。在這把問題說出來,希望對有需要的朋友提供些幫助~~
項目: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
新聞熱點
疑難解答
圖片精選