我使用IIS 7.5在Windows 7 64位上运行C#ASP.NET 4.5 Web应用程序。它使用的应用程序池名为“ASP.NET v4.0”,其标识为ApplicationPoolIdentity。该应用程序使用MS Office Interop(Microsoft Excel 14.0对象库)。
在第wBook = wBooks.Add(Missing.Value);
行,它会抛出以下错误:
Microsoft Excel无法打开或保存更多文档,因为那里 没有足够的可用内存或磁盘空间。
u2022要提供更多可用内存,请关闭工作簿或程序 不再需要。
u2022要释放磁盘空间,请从中删除不再需要的文件 你保存到的磁盘:at Microsoft.Office.Interop.Excel.Workbooks.Add(对象模板)
1)我在DCOM配置中的MS Excel应用程序上给了帐户IIS apppool \ ASP.NET v4.0完全控制。
2)我在'C:\ Windows \ SysWOW64 \ config \ systemprofile'上给了IIS apppool \ ASP.NET v4.0完全控制,并在其中创建了一个Desktop文件夹。
3)我需要继续使用Interop,但不推荐使用。
4)该应用程序在Windows Server 2003 / Windows XP 32位上运行良好。
5)计算机上安装了MS Office 2010(64位,试用版)。
6)我不想改变应用程序。从ApplicationPoolIdentity到网络服务等的池标识.ApplicationPoolIdentity是IIS 7中新的标识类型,建议使用它。
如果我在DCOM配置中选择“交互式用户”(我已经以管理员身份登录),它可以正常工作,但它会导致其他问题。我需要使用“启动用户”,这是ASP.NET v4.0。所以看起来这是一个许可问题。
请帮忙。 谢谢。
答案 0 :(得分:35)
右键单击包含文件资源管理器的文件,选择Properties
,然后选择General
标签,然后点击Unblock
按钮。此错误消息非常容易引起误解。
答案 1 :(得分:14)
在注册表编辑器上转到此键(运行| Regedit) HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \用户外壳文件夹
将密钥缓存更改为 C:\ Windows \ Temp
我的类似问题就这样解决了。
此致
里普利
答案 2 :(得分:5)
我有同样的问题,我的服务器机器中的内存没有问题,最后我能够通过以下步骤修复它
3.在右侧找到“Microsoft Excel Application”。
4.右键单击
打开其属性5.在“身份”选项卡下,选择交互式用户选项,然后单击“确定”按钮。
再次检查。希望它有所帮助
注意:但是现在您可能会遇到另一个COM错误“检索组件的COM类工厂......”。在这种情况下,只需将身份设置为此用户,然后输入具有足够权限的用户的用户名和密码。在我的情况下,我进入了高级用户组的用户。
答案 3 :(得分:5)
像这样测试。有时,权限问题。
cmd => DCOMCNFG
点击
组件服务>计算>我的电脑> Dcom配置>并选择 微软Excel应用程序
右键单击“Microsoft Excel应用程序”
属性>授予Asp.net权限
选择身份表>选择互动用户>选择确定
答案 4 :(得分:0)
我也遇到相同的情况,在多次搜索后发现了两个解决方案。希望这会有所帮助。
方法01:
在尝试在Excel中打开文件之前,请在Windows的文件资源管理器中找到它。右键单击该文件,然后选择“属性”。在“常规”选项卡的底部,单击“取消阻止”按钮。取消阻止文件后,Windows应该记住并且Excel不会再询问您。 此选项可用于某些文件类型,但不适用于其他文件类型。如果没有“取消阻止”按钮,请使用方法2。
方法02:
如果通常将下载的Excel文件存储在一个文件夹中,则此选项更好。在Excel中,单击文件»选项»信任中心»信任中心设置»受信任位置。点击添加新位置。浏览到存储Excel文件的文件夹,选择也信任此位置的子文件夹,然后单击确定。
答案 5 :(得分:0)
如果以上方法均无效,请尝试以下方法:
在Component services >Computes >My Computer>Dcom config>Microsoft Excel Application>Properties
中,转到“安全”选项卡,在所有三个部分上单击“自定义”,然后添加要运行该应用程序的用户,并向该用户授予完全权限。
转到C:\Windows\Temp
确保存在,并且不提示您输入。
答案 6 :(得分:0)
在DCOM配置中授予必要的权限后,我还需要将IIS中我的应用程序的身份更改为custom account