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