2012-01-12 19 views
0

我正在開發使用VS.Net 2010 &嵌入式CR這將在2008年MS和IIS 7上運行一個Web應用程序。 的功能之一是更新數據庫記錄(20-50〜),並在打印到每個記錄的網絡打印機水晶報表for循環。 (由於業務需要,報告必須逐一打印) 該功能在我的機器中正常工作。如果報告打印到PDF打印機,它也可以在服務器上運行。錯誤「錯誤應用程序w3wp.exe ......」在事件查看器中發現,如果打印水晶報表在一個循環中

然而,如果被印刷到物理網絡打印機,標題錯誤在經過多次循環事件觀看者提示;頁面中沒有返回異常,它只是停留在一個點上,頁面加載直到超時。

我加在節目記錄,發現循環可以停在任何地方,即創建一個新的水晶報表,設置報表數據源指定打印機名稱,更新的記錄...

下面的代碼片段打印報表,很簡單:

rptDoc.PrintOptions.PrinterName = strPrinterName; 

rptDoc.PrintToPrinter(intPrintCopy, false, 0, 0); 

如果上面的代碼被註釋,錯誤犯規發生任何更多的for循環可以完成每次不管多少條記錄。

的斷層模塊可以是ntdll.dll的(最),CRPE32.DLL,KERNEL32.DLL,MSVCR80.DLL等;下面是捕獲一些錯誤消息:

  • 錯誤應用程序w3wp.exe,版本7.0.6001.18000,時間戳0x47919ed8,錯誤模塊ntdll.dll中,版本6.0.6001.18538,時間戳0x4cb73957,異常代碼0000005,容錯偏移0x0000000000046ef0,進程ID 0x%9,應用程序啓動時間0x%10。

  • 錯誤應用程序w3wp.exe,版本7.0.6001.18000,時間戳0x47919ed8,錯誤模塊KERNEL32.DLL,版本6.0.6001.18631,時間戳0x4da46d09,異常代碼0xe0434352,故障偏移0x0000000000025efd,進程id 0x9c0,應用程序啓動時間0x01ccd042bf90d940。

  • 錯誤的應用程序程序w3wp.exe,版本7.0.6001.18000,時間戳0x47919ed8,錯誤模塊CRPE32.DLL,版本13.0.2.469,時間戳0x4eb91936,異常代碼0000005,故障偏移0x00000000002948ea,進程ID爲0x%9,應用開始時間爲0x%10。

我不熟悉服務器和IIS的東西,但它似乎不是一個編程問題,因爲它在計算機上工作正常。 任何人都可以給我一些想法?

非常感謝!

回答

0

經過試驗和測試,我發現這其實是一個編碼問題。 通用函數根據記錄信息啓動並返回報告文檔對象(使用數據源集)。 它在循環中使用,因此太多的報表文檔對象被啓動並在IIS進程中崩潰。 這很可能是另一個水晶報告錯誤「最大報告處理作業限制」。但是,程序並沒有拋出這個錯誤。事件查看器中的錯誤也讓我分心。

現在,要解決這個問題,我發起的報告文件循環之前,在循環中更新其數據源,並在循環後設置它。