我正在使用VS.Net 2010 & embedded开发一个web应用程序,它将运行在MS 2008和IIS 7上。其中一个功能是更新数据库记录( ~20-50),并在一个for循环中将每个记录打印到网络打印机上。(由于业务需要,报表必须逐个打印)该功能在我的机器上运行良好。如果报表被打印到PDF打印机,它也可以在服务器上工作。
但是,如果将其打印到物理网络打印机上,则事件查看器在几个循环后提示标题错误;页面中没有返回任何异常,它只是在某个点停止,直到超时。
我在程序中添加了日志,发现循环可以在任何地方停止,即创建一个新的水晶报告,设置报表数据源,指定打印机名称,更新记录.
下面是打印报告的代码片段,非常简单:
rptDoc.PrintOptions.PrinterName = strPrinterName;
rptDoc.PrintToPrinter(intPrintCopy, false, 0, 0);
如果上面的代码被注释,错误就不会再发生了,不管有多少记录,for循环每次都可以完成。
故障处理模块可以是ntdll.dll (大多数)、crpe32.dll、kernel32.dll、MSVCR80.dll等;下面是捕获的一些错误消息:
0x%10.
我不熟悉服务器和IIS的内容,但这似乎不是一个编程问题,因为它在计算机上运行良好。有人能给我点主意吗?
非常感谢!
发布于 2012-02-02 03:01:32
经过测试和测试,我发现这实际上是一个编码问题。一个泛型函数用于根据记录信息启动和返回报表文档对象(具有数据源集)。它在循环中使用,因此可能有太多的报表文档对象被启动并在IIS进程中崩溃。这很可能导致另一个水晶报告错误“最大报表处理作业限制”。然而,程序只是没有抛出这个错误。事件查看器中的错误也分散了我的注意力。
现在,为了解决这个问题,我在循环之前启动一个报告文档,在循环中更新它的数据源,并在循环之后处理它。
https://stackoverflow.com/questions/8829931
复制相似问题