我编写了以下代码:在文档中搜索一个单词,该单词在控制台应用程序中没有问题,但是当我单击按钮时在ASP.NET应用程序中不起作用:
using Microsoft.Office.Interop.Word;
Application objWordApp = new Application();
objWordApp.Visible = false;
object missing = System.Reflection.Missing.Value;
Document objDoc;
objDoc = objWordApp.Documents.Open(fileURL, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing);
object findText = "Tags";
objDoc.Content.Find.ClearFormatting();
try
{
if (objDoc.Content.Find.Execute(ref findText,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing))
{
Console.WriteLine("Text found: Name document - " + "'" + docTitle + "'");
}
objDoc.Close(ref missing, ref missing, ref missing);
objWordApp.Application.Quit(ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
objDoc.Close(ref missing, ref missing, ref missing);
objWordApp.Application.Quit(ref missing, ref missing, ref missing);
throw ex;
}
}
catch (Exception ex)
{
test11.Text = ex.ToString();
}
System.UnauthorizedAccessException:检索COM类工厂 具有CLSID {000209FF-0000-0000-C000-000000000046}的组件失败 由于以下错误:80070005访问被拒绝。 (例外 HRESULT:0x80070005(E_ACCESSDENIED))。
我在论坛上查看了很多信息,按照文章中的内容进行了所有操作,没有任何帮助,错误没有消除。
2。Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046}
答案 0 :(得分:1)
您可以尝试这个
第1步:
引用此链接:Interop.Word Documents.Open is null
如果您仍在寻找答案,我刚刚在我的项目中找到了答案。
打开DCOM配置设置:
开始-> dcomcnfg.exe
计算机
本地计算机
配置DCOM
搜索Microsoft Word 97-2003文档->属性 标签标识,从启动用户更改为交互式用户
第二步:
转到您的项目进行以下更改。
第3步:
转到 IIS服务器,将应用程序池(如下面的配置)和映射添加到您的网站或应用程序。
答案 1 :(得分:0)
问题是,我只需要使用method SPSecurity.RunWithElevatedPrivileges在ASP.NET应用程序(SharePoint)上调用具有顶级权限的代码。
SPSecurity.RunWithElevatedPrivileges(delegate() {
//code is here
});