对 Server.CreateObject 的调用失败的解决

2011-08-08 18:02:53

<p>一个简单的例子,Web从excel中读取内容:</p> <p>&amp;lt;<a href=&#34;mailto:%@&#34;>%@language=vbscript</a> %&amp;gt;<br /> &amp;lt;%</p> <p>Set xlApp = server.Cr&#101;ateObject(&amp;quot;Excel.Application&amp;quot;)</p> <p>strsource = &amp;quot;f:\1dw\cl\汉字库.xls&amp;quot;</p> <p>Set xlbook = xlApp.Workbooks.Open(strsource)<br /> Set xlsheet = xlbook.Worksheets(1)</p> <p>i=1<br /> response.write &amp;quot;&amp;lt;table cellpadding=0 cellspacing=0 border=1 width=500&amp;gt;&amp;quot;<br /> while xlsheet.cells(i,1)&amp;lt;&amp;gt;&amp;quot;&amp;quot;</p> <p>&amp;nbsp;response.write &amp;quot;&amp;lt;tr&amp;gt;&amp;quot;<br /> &amp;nbsp;response.write &amp;quot; &amp;lt;td height=20 align=center width=100&amp;gt;&amp;quot; &amp;amp; xlsheet.Cells(i, 1) &amp;amp; &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&amp;nbsp;<br /> &amp;nbsp;response.write &amp;quot; &amp;lt;td height=20 align=center width=200&amp;gt;&amp;quot; &amp;amp; xlsheet.Cells(i, 2) &amp;amp; &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;&amp;nbsp;<br /> &amp;nbsp;response.write &amp;quot; &amp;lt;td height=20 align=center width=200&amp;gt;&amp;quot; &amp;amp; xlsheet.Cells(i, 3) &amp;amp; &amp;quot;&amp;lt;/td&amp;gt;&amp;quot;<br /> &amp;nbsp;response.write &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;<br /> &amp;nbsp;i=i+1</p> <p>wend<br /> response.write &amp;quot;&amp;lt;/table&amp;gt;&amp;quot;<br /> set xlsheet=nothing<br /> set xlbook=nothing<br /> xlApp.quit</p> <p>%&amp;gt;</p> <p>运行,产生错误</p> <p>错误类型:<br /> Server 对象, ASP 0178 (0x80070005)<br /> 检查权限时,对 Server.Cr&#101;ateObject 的调用失败。拒绝对此对象的访问。</p> <p>参考网上的方法,摸索以下步骤:</p> <p>管理工具--&amp;gt;组件服务--&amp;gt;计算机--&amp;gt;我的电脑--&amp;gt;DCOM配置</p> <p>1.选择Microsoft Excel 应用程序 --&amp;gt;属性</p> <p>标识:选择交互式用户</p> <p>安全:启动和激活权限--&amp;gt;自定义,加入InterNet来宾帐户,勾上本地启动和本地激活</p> <p>2.选择Microsoft Office Excel 2007 工作簿 --&amp;gt;属性</p> <p>常规:身份验证级别&amp;nbsp; --&amp;gt;无</p> <p>&amp;nbsp;</p> <p>有人电脑无DCOM配置的属性,解决方法(已验证)</p> <p>确保下面四个服务是开着的话,那就能确保右键的属性能够出现。<br /> &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、Remote Procedure Call (RPC)<br /> &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、COM+&amp;nbsp;&amp;nbsp;&amp;nbsp; Event&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;<br /> &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、DCOM&amp;nbsp;&amp;nbsp;&amp;nbsp; Server&amp;nbsp;&amp;nbsp;&amp;nbsp; Process&amp;nbsp;&amp;nbsp;&amp;nbsp; Launcher&amp;nbsp;&amp;nbsp;<br /> &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4、Distributed&amp;nbsp;&amp;nbsp;&amp;nbsp; Transaction&amp;nbsp;&amp;nbsp;&amp;nbsp; Coordinator</p> <div>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后再进入组件服务,就能在DCOM配置中看到右键的属性了,并且组件服务计算机中的&amp;quot;我的电脑&amp;quot;上的那个红色的向下箭头也消失了。</div> <p>&amp;nbsp;<br /> &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止这个错误,主要是系统无法找到MS DTC 日志文件造成的,只要创建一下就可以了:开始-运行-输入命令&amp;quot;msdtc -resetlog&amp;quot;</p> <p>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后再启动该服务就可以了。</p> <br /> <br /> <p>---------------另一篇</p> <br /> <p><span style=&#34;font-size: 24px;&#34;>Server.Cr&#101;ateObject(&amp;quot;Excel.Application&amp;quot;)的权限</span></p> <div> <table width=&#34;100%&#34; cellspacing=&#34;0&#34; cellpadding=&#34;0&#34; border=&#34;0&#34;> <tbody> <tr> <td>&amp;nbsp;</td> <td width=&#34;250&#34; align=&#34;right&#34;>&amp;nbsp;</td> </tr> </tbody> </table> Set xlApp=Server.Cr&#101;ateObject(&amp;quot;Excel.Application&amp;quot;)%&amp;gt; <br /> 执行这句时发生错误如下: <br /> Server 对象, ASP 0178 (0x80070005) <br /> 检查权限时,对 Server.Cr&#101;ateObject 的调用失败。拒绝对此对象的访问。</div> <p>解决办法:<br /> 在命令行键入&amp;ldquo;DCOMCNFG&amp;rdquo;,则进入DCOM组件配置界面,选择Microsoft Excel后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器</p> <p>&amp;nbsp;</p> <p>感谢BAIDU。我的IIS能cr&#101;ateObject了</p>