Ошибка создания дескриптора окна
Привет,
Я создал PDF-файл во время выполнения в классе с помощью средства просмотра отчетов и сохранил эти PDF-файлы на FTP-сервере. Я не использую никакой оконной формы. Весь код в приложении службы windows. Я установил эту службу на сервере. После обработки некоторых записей ниже обнаружена ошибка и не знаю почему. Затем я остановил службу и перезапустил ее с той же проблемой. Пожалуйста помочь.
System.ComponentModel.Win32Exception (0x80004005): Error creating window handle. at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp) at System.Windows.Forms.Control.CreateHandle() at System.Windows.Forms.Control.get_Handle() at System.Windows.Forms.Control.PointToScreen(Point p) at System.Windows.Forms.ToolStripItem.TranslatePoint(Point fromPoint, ToolStripPointType fromPointType, ToolStripPointType toPointType) at System.Windows.Forms.ToolStripDropDownItem.DropDownDirectionToDropDownBounds(ToolStripDropDownDirection dropDownDirection, Rectangle dropDownBounds) at System.Windows.Forms.ToolStripDropDownItem.GetDropDownBounds(ToolStripDropDownDirection dropDownDirection) at System.Windows.Forms.ToolStripDropDownItem.get_DropDownLocation() at System.Windows.Forms.ToolStripDropDown.GetDropDownBounds(Rectangle suggestedBounds) at System.Windows.Forms.ToolStripDropDown.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) at System.Windows.Forms.Control.SetBounds(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) at System.Windows.Forms.Control.set_Size(Size value) at System.Windows.Forms.ToolStripDropDown.AdjustSize() at System.Windows.Forms.ToolStripOverflow.OnLayout(LayoutEventArgs e) at System.Windows.Forms.Control.PerformLayout(LayoutEventArgs args) at System.Windows.Forms.Control.PerformLayout() at System.Windows.Forms.Control.ResumeLayout(Boolean performLayout) at System.Windows.Forms.Control.ResumeLayout() at System.Windows.Forms.ToolStrip.OnLayout(LayoutEventArgs e) at System.Windows.Forms.Control.PerformLayout(LayoutEventArgs args) at System.Windows.Forms.Control.PerformLayout() at System.Windows.Forms.Control.ResumeLayout(Boolean performLayout) at System.Windows.Forms.Control.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) at System.Windows.Forms.TextBoxBase.SetBoundsCore(Int32 x, Int32 y, Int32 width, Int32 height, BoundsSpecified specified) at System.Windows.Forms.Control.System.Windows.Forms.Layout.IArrangedElement.SetBounds(Rectangle bounds, BoundsSpecified specified) at System.Windows.Forms.ToolStripControlHost.OnBoundsChanged() at System.Windows.Forms.ToolStripItem.SetBounds(Rectangle bounds) at System.Windows.Forms.ToolStripItem.set_Width(Int32 value) at Microsoft.Reporting.WinForms.ReportToolBar..ctor() at Microsoft.Reporting.WinForms.ReportViewer.InitializeComponent() at Microsoft.Reporting.WinForms.ReportViewer..ctor()
Richard MacCutchan
Что делает служба?
Mahesh.Dhiman27
Привет,
Мой сервис извлекает данные из базы данных sqlserver и создает pdf-файл с помощью средства просмотра отчетов, а затем сохраняет этот pdf-файл на ftp-сервере. Я не использую никакой оконной формы.
Шаги:
1) создание объекта просмотра отчетов в методе типа ReportViewer rptViewer = new ReportViewer();
2) извлечение данных из базы данных и заполнение набора данных.
3) Установите все свойства средства просмотра отчетов.
4) Создайте ftp-запрос.
5) запись байтов данных средства просмотра отчетов на ftp-сервер с помощью ftp-потока.
6) rptViewer.LocalReport.Обновить(); rptViewer.RefreshReport();
7) очистите и утилизируйте объект dataset.
8) очистите и утилизируйте объект средства просмотра отчетов
После этого же процесса для следующей записи.
Спасибо
Махеш Дхиман
Sergey Alexandrovich Kryukov
Какой смысл смотреть на стек исключений, не видя кода, создающего это исключение?
—СА
Mahesh.Dhiman27
Привет,
Вот мой код, пожалуйста, проверьте.
общественная статический недействительным GenerateNAVPDF(строка strBoxID, strWebOrder строку, строку strDocketNo, ftpIP строку, строку имя папки)
{
Элемент rptViewer = новый элемент();
пробовать
{
лесоруб.Debug ("Generate PDF start");
Предупреждение [] предупреждения;
string[] streamIds;
строковый тип = строка.Пустой;
string encoding = строка.Пустой;
расширение строки = string.Пустой;
строка devInfo = "& lt;deviceinfo> & lt;outputformat & gt;PDF" +
"&ЛТ;PageWidth&ГТ;5.83 в&ЛТ;/PageWidth и GT;" +
"&ЛТ;параметры pageheight&ГТ;8.27 в&ЛТ;/параметры pageheight и GT;" +
"<margintop> 0in" +
"<marginleft> 0in" +
"<marginright> 0in" +
"<marginbottom> 0in" +
"";
ProcessInvoiceDataBL objInvoiceBL = новый ProcessInvoiceDataBL();
Набор dsInvoice = нуль;
dsInvoice = objInvoiceBL.GetPostedInvoiceDetail(strBoxID);
лесоруб.Отладка("Выборка Данных Накладных Успешно.");
if (dsInvoice != null & & amp; dsInvoice.Таблицы.Граф > 1)
{
если (dsInvoice.Таблицы[0].Строк.Граф > 0)
{
если (преобразовать.Метод toString(dsInvoice.Таблицы[0]. строки[0] ["giftorder"]) = = " 1")
{
лесоруб.Debug ("это подарочный заказ, пожалуйста, используйте Nav для печати этого счета. Транспортной накладной печатается.");
}
ещё
{
лесоруб.Отладка("счет-фактура PDF начать");
BarcodeLib.Штрих-кода б = новый BarcodeLib.Штрих-код();
b. выравнивание = BarcodeLib.Выравнивание позиций.ЦЕНТР;
б.Labelposition Значение = BarcodeLib.LabelPositions.TOPCENTER;
BarcodeLib.Тип = BarcodeLib.Тип.CODE128;
б.IncludeLabel = ложь;
б.Labelposition Значение = BarcodeLib.LabelPositions.TOPCENTER;
Система.Рисование.Изображения с IMG = б.Кодирование(типа, преобразования.Метод toString(dsInvoice.Таблицы[0]. Строки[0] ["DocketNo"]), 400, 100);
dsInvoice.Таблицы[0].Столбцы.Add ("ImgData", typeof(byte[]));
dsInvoice.Таблицы[0]. строки[0] ["ImgData"] = imageToByteArray(img);
rptViewer.В Разделе Processingmode = В Разделе Processingmode.Местный;
rptViewer.LocalReport.Источников данных.Четкий();
rptViewer.LocalReport. ReportPath = @"C:\UploadNAVPDFToFTPLog\Invoice.rdlc";
rptViewer.LocalReport.Источников данных.Четкий();
rptViewer.LocalReport.Источников данных.Add(new ReportDataSource("dsInvoice_Header", dsInvoice.Таблицы[0]));
rptViewer.LocalReport.Источников данных.Add(new ReportDataSource("dsInvoice_Lines", dsInvoice.Таблицы[1]));
лесоруб.Debug("RPT Datasource Assiged, Render Start");
byte[] bytes = rptViewer.LocalReport.Визуализация("ПДФ", база данных "devinfo", выход тип, вне кодировке, вне расширения, из streamIds, предупреждения);
лесоруб.Debug ("RPT Render заканчивается");
string file_name = strWebOrder + " _ " + strDocketNo +". pdf"; / / сохранить файл
System. Net.FtpWebRequest ftpRequest = null;
лесоруб.Debug ("запуск FTP-запроса");
ftpRequest