Excel Com Interop ASP.Net无法将文件写入磁盘。 权限?

我有一个非常简单的网页表单,让用户select报表,一个他们希望在xls格式,而不是CSV格式的报告。 我已经使用COM INTEROP与excel 2007掀起了报告。它在我的本地计算机上工作,并可以写入文件,但在Web服务器上失败,出现此错误:

由于没有足够的可用内存或磁盘空间,Microsoft Office Excel无法打开或保存更多的文档。

•要提供更多内存,请closures不再需要的工作簿或程序。

•要释放磁盘空间,请从保存的磁盘中删除不再需要的文件。

服务器上有足够的磁盘空间,所以我不认为这是一个权限问题? 我已经升级了ASPNET和NETWORK SERVICE帐户,以便对我们保存报告的文件夹进行写入和修改访问 – 但仍然没有喜悦。 有任何想法吗?

我是否需要使用特定的用户帐户调用com对象,或者可以将interop调用提升为pipe理员帐户? 任何想法如何做到这一点?

你可能想使用你的ASPNET进程的模拟; 这里有一些关于如何做到这一点的信息和示例: 从C#控制台应用程序中杀死一个win进程:如何设置权限? 有关模拟的更多信息如何在ASP.NET应用程序中实现模拟

对不起,伙计们,sorting。

哔哔,你在一半。 我以pipe理员身份运行Excel:

在组件服务中,selectexcel应用程序并selectadmin作为运行它的用户。 似乎工作好的一周使用它会得到:)

谢谢大家!

SpreadsheetGear for .NET将允许您将xls和xlsx工作簿直接保存到IWorkbook.SaveToStream的响应stream中。 这是所有安全pipe理的C#代码,所以不需要像pipe理员那样运行任何东西,也不会遇到Excel COM Interop在ASP.NET服务器上带来的问题。

您可以在这里使用SpreadsheetGear查看一些简单的ASP.NET Excel报告示例(C#和VB),并在此处下载免费试用版。

免责声明:我自己的SpreadsheetGear LLC