Windows2003Server中DOTNET程序访问COM组件
2008-04-24 06:24
232 查看
今天挺高兴,项目终于上线使用。只是上线之前遇到的问题折磨得人精疲力尽。。。不过总算解决了。。在这把问题说出来,希望对有需要的朋友提供些帮助~~
项目:COM" target=_blank>DOTNET项目,C#开发,主要功能是通过COM组件访问远程接口。
运行环境:COM" target=_blank>Windows 2003 COM" target=_blank>Server IIS6.0 .Net 1.1
问题:COM组件及系统在COM" target=_blank>Windows2000操作系统下都能正常使用,但迁移到WIN2003下,在程序调用组件时进程卡住了,有时会返回服务器出现意外情况的错误~
原因分析:首先,组件在其它操作系统下通过,说明组件应该没问题;注册COM组件及COM" target=_blank>DOTNET项目引用方法均正确,而错误出现在调用组件这一步,而COM组件的功能就是通过IP地址及端口访问远程接口,这里注意有一个远程网络连接的工作;上网搜索类似问题,大部分文章都是组件的权限问题,我也根据文章所写设置了组件,IIS访问用户等的权限,都给予了最大权限,结果还是不行。。快崩溃了。。
解决方法:被这个问题折磨了几天之后,公司联系了微软客户支持,micro给了个方法,查看下IIS6.0里的应用程序池的安全性权限。查看了下,在IIS里的应用程序池属性中,“标识”标签下有个默认的安全性帐户“网络服务”即NetWork Service。Network Service 是 COM" target=_blank>Windows COM" target=_blank>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. href="http://www.66of.com" target=_blank>COM/china/technet/COMmunity/columns/insider/iisi1203.mspx
http://flyskywlh.cnblogs. href="http://www.66of.com" target=_blank>COM/archive/2006/07/07/445508.html
项目:COM" target=_blank>DOTNET项目,C#开发,主要功能是通过COM组件访问远程接口。
运行环境:COM" target=_blank>Windows 2003 COM" target=_blank>Server IIS6.0 .Net 1.1
问题:COM组件及系统在COM" target=_blank>Windows2000操作系统下都能正常使用,但迁移到WIN2003下,在程序调用组件时进程卡住了,有时会返回服务器出现意外情况的错误~
原因分析:首先,组件在其它操作系统下通过,说明组件应该没问题;注册COM组件及COM" target=_blank>DOTNET项目引用方法均正确,而错误出现在调用组件这一步,而COM组件的功能就是通过IP地址及端口访问远程接口,这里注意有一个远程网络连接的工作;上网搜索类似问题,大部分文章都是组件的权限问题,我也根据文章所写设置了组件,IIS访问用户等的权限,都给予了最大权限,结果还是不行。。快崩溃了。。
解决方法:被这个问题折磨了几天之后,公司联系了微软客户支持,micro给了个方法,查看下IIS6.0里的应用程序池的安全性权限。查看了下,在IIS里的应用程序池属性中,“标识”标签下有个默认的安全性帐户“网络服务”即NetWork Service。Network Service 是 COM" target=_blank>Windows COM" target=_blank>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. href="http://www.66of.com" target=_blank>COM/china/technet/COMmunity/columns/insider/iisi1203.mspx
http://flyskywlh.cnblogs. href="http://www.66of.com" target=_blank>COM/archive/2006/07/07/445508.html
相关文章推荐
- Windows2003Server中DOTNET程序访问COM组件
- Windows 2003 Server 中DOTNET程序访问COM组件~~~
- Windows 2003 Server 中DOTNET程序访问COM组件
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法!
- IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
- Java 程序通过 JDBC 访问 PPAS(PostgresPlus Advanced Server)9.1.2
- 启动SQL 2005的SQL Server Configuration Manager时显示无法连接到WMI提供程序。你没有权限或者该服务器无访问···
- SELinux导致无法访问外网,PHP连接MySQL异常Can't connect to MySQL server、redis程序访问提示Redis server went away的解决方法
- 关于2003Server下IIS运行.net程序IE无法访问出现403.1错误的解决过程
- 将网站部署到windows2003 iis6之后,出现asp.net程序页面无法访问情况
- 未能添加对XX的引用,这不是一个有效的程序集或COM组件,只有具有扩展名dll的程序集和COM组件才能被引用。请确保该文件可访问,并且 是一个有效的程序集或COM组件
- 在 64位windows2003server 上部署 含32位COM组件的webservice
- 64位winserver2008环境,ASP.Net程序不能访问Oracle数据库(安装的32位Oracle客户端)
- 32位程序访问64位DLL,使用COM组件
- UNIX主机访问PHP程序提示“Internal Server Error”的处理办法
- 在windows2003server上运行asp程序,发生验证码看不到,文件找不到等错误的解决办法
- windows2003server自带防火墙导致sql server2k无法访问,谁有好办法?
- windows7无法访问windows2003server搭建的共享服务
- Windows2003 Server 下 IIS与Tomcat的整合,实现ASP与JSP统一访问(支持多域名访问)
- 不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发生如下错误: HTTP 错误 500.21 - Internal Server Error处理程序“N