2015-09-18 3 views
0

Я создаю и сохраняю pdf-документ на своем сервере, используя библиотеку PDF Migradoc через C# WCF Service. С перерывами файловый файл не работает, и трассировка стека WCF указывает это:Ошибка Выполняется операция Overlapped I/O при сохранении файла на сервере с помощью C#

На сервере возникла ошибка при обработке запроса. Сообщение об ошибке «Выполняется операция перекрытия ввода-вывода».

на MS.Win32.HwndWrapper..ctor (Int32 classStyle, Int32 style, Int32 exStyle, Int32 x, Int32 y, Int32 ширина, высота Int32, имя строки, родитель IntPtr, крючки HwndWrapperHook [] в System.Windows .Threading.Dispatcher..ctor() в System.Windows.Media.Visual..ctor (ResourceType resourceType) в System.Windows.Media.ContainerVisual..ctor() в PdfSharp.Drawing.XGraphics..ctor (DrawingContext dc, XSIZE размер, XGraphicsUnit pageUnit, XPageDirection pageDirection) в MigraDoc.Rendering.DocumentRenderer.PrepareDocument() в MigraDoc.Rendering.PdfDocumentRenderer.PrepareDocumentRenderer (Boolean prepareCompletely) при MigraDoc.Rendering.PdfDocumentRenderer.RenderDocument() в SARIService.DigAlertPDF.CreateReport (TicketReport TicketData) в SARIService.ServiceDigAlert.GetDAReportInfo (String ID) в SyncInvokeGetDAReportInfo (Object, Object []

После возникновения ошибки он будет продолжаться до тех пор, пока сервер не будет перезагружен или попытки сохранения файла не будут остановлены на 15-20 минут. Любая идея, что здесь происходит?

Благодаря

ответ

1

Я подозреваю, что может быть только один ContainerVisual. Одновременно приводят к тому, что две потоки, передающие документы, приводят к этой ошибке.

Примерно через 20 минут бездействия домен приложения будет уничтожен. Следующий запрос рендеринга создаст новый домен приложения, и рендеринг будет работать снова.

Вещи, которые вы можете попробовать:

  • Переключить на GDI + построить (вместо WPF сборки) - не уверен, что поддерживает одновременную визуализацию, но это легко попробовать это
  • Создать новую AppDomain для каждого документ, это должно избежать проблемы параллелизма
+0

Спасибо. Я дам это попробовать – pvitt

+0

У меня такая же проблема с версией WPF (я переключился на WPF после того, как не смог заставить GDI работать - я забыл, что проблема была, как это было какое-то время назад). Не могли бы вы рассказать о том, как создать новый AppDomain для каждого документа? – Tarostar