我使用Windows XP_SP_3和IIS 5(本地主机),使用asp.net4构建网站并使用此代码:
Application appClass = new Application();
Document wordDoc = appClass.Documents.Add(Server.MapPath("~") + @"Files\tmp.docx");
wordDoc.SaveAs(@"e:\hp\Files\" + TextBox1.Text + ".docx");
wordDoc.Close();
如果使用VS2010运行网站,则可以。但如果使用IIS 5(本地主机)运行,请显示以下错误:
检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂因以下错误而失败:80070005访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。
描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.UnauthorizedAccessException:由于以下错误,检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败:80070005拒绝访问。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。
ASP.NET无权访问所请求的资源。考虑将资源的访问权限授予ASP.NET请求标识。 ASP.NET具有基本进程标识(IIS 5上通常为{MACHINE} \ ASPNET,IIS 6和IIS 7上为网络服务,IIS 7.5上已配置的应用程序池标识),如果应用程序未模拟,则使用该标识。如果应用程序模拟通过,则标识将是匿名用户(通常为IUSR_MACHINENAME)或经过身份验证的请求用户。
要授予对文件的ASP.NET访问权限,请在资源管理器中右键单击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加适当的用户或组。突出显示ASP.NET帐户,并选中所需访问的框。
来源错误:
在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。
我打开组件服务>计算机>右键单击“我的电脑”>选择属性> COM Sucrity>启动和激活...>编辑默认值>添加>高级>
我找不到用户IIS(IIS_IUSRS)。所以选择ASP.NET并确定并选中Local Launch&远程启动&本地激活&远程激活。
休息系统并再次使用iis5运行站点。但是再次显示错误!
答案 0 :(得分:5)
答案 1 :(得分:1)
启动Internet信息服务(IIS)。 右键单击应用程序的虚拟目录,然后单击“属性”。 单击目录安全性选项卡。 在“匿名访问和身份验证控制”下,单击“编辑” 确保未选中“匿名访问”复选框,并且“集成Windows身份验证”是唯一选中的复选框。 配置ASP.NET以通过模拟使用Windows身份验证,请使用以下配置
...
<authentication mode="Windows"/>
<identity impersonate="true"/>
...