温故而知新

.net相关

导航

.NET生成word问题,被呼叫方拒绝接收呼叫

在使用word作为模板绑定数据,生成报表时,在循环中易出现错误:
 foreach (FormField bm0 in _doc.FormFields)
{...
bm0.Range.Text=bandvalue;
}
易出现异常:
System.Runtime.InteropServices.COMException (0x80010001): 被呼叫方拒绝接收呼叫。
(Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))
原因可能为:
1.目录权限
2,操作频繁
若是权限问题,按如下步骤:
在运行里面输入:
dcomcnfg

在“服务”里找到这三个服务,都去启动

Distributed Transaction Coordinator

Remote Procedure Call (RPC)

Security Accounts Manager

如果:Distributed Transaction Coordinator 启动不了
就先在运行里面输入:
msdtc -resetlog

然后在开启:Distributed Transaction Coordinator


接着关闭服务组件窗体 ,并重新打开,这个时候每个组建就有属性了
然后:在命令行中输入:dcomcnfg,会显示出“组件服务”管理器
2、打开“组件服务->计算机->我的电脑->DCOM 配置”,找到“Microsoft Word文档”,单击右键,选择“属性”
在“属性”对话框中单击“标识”选项卡,选择“交互式用户””,关闭“组件服务”管理器。

若是操作频繁,则需要在代码中加入延时:
int m_iErrCnt=0;
while( true )
{
      try
    {
     bm0.Range.Text=bandvalue;
     break;
    }
    catch(SystemException err)
   {
            m_iErrCnt++;
           if( m_iErrCnt<10 )
          {
          System.Threading.Thread.Sleep(1000);
            }
          else
          { throw err;}
   }

}

posted on 2009-12-06 15:17  业余程序猿  阅读(7921)  评论(2编辑  收藏  举报