iis 0x80070005 Windows Server2003 IIS6中使用RDS及0x80070005错误 - IIS - 服务器之家

服务器之家

专注于服务器技术!
当前位置:首页 > Web服务器 > IIS

iis 0x80070005 Windows Server2003 IIS6中使用RDS及0x80070005错误

发布时间:2017-06-18 来源:服务器之家

以下是一位达人的日志(蓝字部分),保存下来,免得以后找不到.

该达人的空间需要登陆才能访问,很不方便.

我另外又设置了注册表:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo]
"HandlerRequired"=dword:00000000
"DefaultHandler"=""
"DisableAutoSafe"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerList]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerList\MSDFMAP.Handler]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerList\MSDFMAP_VB.Handler]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DataFactory\HandlerInfo\SafeHandlerList\MSDFMAP_VC.Handler]

否则可能会提示没有权限.

--------------------补充(2010-2-25)--------------------------

重新安装IIS后,按之前的方法配置,却提示意外错误0x80070005,

对照后发现,少了一些注册表(系统默认好像是有的),导入以下注册表即可(达人的步骤中有此项).

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch\AdvancedDataFactory]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch\RDSServer.DataFactory]

 

-------------------------------------------------

实战 RDS

RDS是Microsoft在ADO中提供的一个远程数据服务。
通过RDS,可以实现客户端在三层模型中访问远端数据。RDS可以应用在例如DHTML页面,比较明显的好处是能在不刷新页面的情况下,对用户页面的书数据进行更新。相比之下,ASP不能做到这样。
尽管如此,RDS还是存在其他问题,特别是安全方面。例如加入仅用IE + RDS完成数据访问,那么明文的客户端脚本会明显地将数据连结、数据访问的方法暴露出来,因此实际应用中,基于安全方面考虑出发,应该使用 RDS 的DataSpace对象,放弃RDSSErver 的DataFactory对象,改为配合中间层的自建商务对象实现,这样既可实现数据集的获取和更新,又可以隐蔽数据的访问方法,同时禁止对DataFactory对象的访问,还能防止针对DataFactory恶意攻击。
?
配置RDS
RDS在IIS 5.0以上的版本中预设提供,对于IIS 4(Windows NT)、PWS(Windows 98/ME)需要安装DCOM及MDAC 2.1以上版本才能支持。(注意:Windows 2000提供IIS5,Windows XP提供 IIS5.1,我indows 2003 Server提供IIS6)
为了在IIS中能支持RDS,需要如下设置:
1、在IIS的默认站点中添加MSDAC的虚拟目录,并指向 C:\Program Files\Common Files\System\msadc
2、设置 C:\Program Files\Common Files\System\msadc 的最少权限应是 Everyone Read
3、设置 MSDAC 虚拟目录的IP限制,如果没有特殊要求,应允许所有IP的访问许可
4、修改注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch,
在Web服务中注册中间层对象,例如默认的DataFactory是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch\RDSServer.DataFactory
对于自建商务对象,则是类似于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch\VbBusObj.VbBusObjCls 的一个项值。
5、从RDS2.0开始,微软强化对DataFactory访问的要求,增加了Handler项,如果想简化对DataFactory的访问限制(代价是安全性下降),可以将 C:\Program Files\Common Files\System\msadc\handunsf.reg 导入到注册表。
6、完成上述设置后,重新启动IIS服务(不需要重新启动电脑),就可以实现对RDS的访问。
?
数据访问的设置
1、通过Connection String对SQL服务器访问
2、通过ODBC对SQL服务器访问。需要特别注意的是,如果使用ODBC,应在服务器上设置System DSN,而不是USER DSN。因为IIS运行在较低的用户级别,如果设置USER DSN,会引起IIS不可访问此DSN,导致数据访问的失败。
?
其他
在微软的网站能找到大部分关于RDS的技术文档,但是个人认为微软的资料并不能完全解答所有的问题。
?
存疑
,参考微软的代码例程,编写了自建的中间层商务对象,在DCOM模式可以实现,但是在 HTTP 连接下并没有成功,有待继续测试。
?