ASP.NET MVC - 无法在服务器上打印ASP.NET Charting控件

时间:2010-02-09 23:10:50

标签: asp.net asp.net-mvc printing permissions

尝试在我的Web应用程序中幕后打印ASP.NET Charting控件。我认为这是打印机的权限问题,因为在我的代码调用之前一切正常:

chart.Printing.Print(false);
bool finished = false;
while (!finished)
{
    finished = File.Exists(settings.GetValue("statusfile")); // file which indicates document was printed
    System.Threading.Thread.Sleep(1000);
}

此时页面只是冻结(或者继续无限加载 - 无限循环!)可以理解这种情况正在发生,因为我100%依赖于正在打印的文档。我打算添加一个超时,但是,我正在试图弄清楚为什么文档永远不会被设置到打印机!

我已将帐户(AppPool正在运行的帐户)授予所有相关文件夹甚至pdf打印机本身...仍然没有。

我错过了什么吗?通过ASP.NET在服务器端打印是否有任何问题?我在过去通过WindowsServices遇到了一些问题,不确定它是否与ASP.NET网站有类似的问题。

更新

根据建议,我更新了AppPool以授予自己(管理员)权限,这是同样的问题。因此,通过外观,工作永远不会被发送到打印机。我似乎无法弄明白为什么......

可能应该在我原来的帖子中提到这个...但是我通过引用的DLL调用打印机,这个代码不是直接从我的应用程序调用的(这很重要)。这也适用于运行Windows 7 IIS7.0的开发机器,其中服务器运行的是带有IIS6.0的Windows 2003服务器。

更新2

我删除了while循环,然后离开了chart.Printing.Print(false)行并将文档 IS 发送到打印机。所以问题必须是设置文件没有被写入,这就是为什么循环永远不会爆发!

1 个答案:

答案 0 :(得分:0)

要确定这是否确实是权限问题,您可以尝试使用Visual Studio Web开发服务器运行该应用程序,该服务器将在您的凭据下运行。或者,如果这不是一个选项,请临时更改IIS应用程序池,以便它使用您的凭据。如果事情仍然不起作用,您可能还有另一个问题。我不确定你正在使用哪个图表库(它是新的Microsoft库吗?),但也许Print想要显示打印机对话框。