Экспорт RadGrid BIFF — существующее соединение было принудительно закрыто удаленным хостом.

Я использую Windows Server 2012 R2, только что обновленную с Windows 2008.

У меня есть сетка Telerik с изображениями. Я недавно сменил серверы, и теперь я не могу экспортировать сетку в бифф с изображениями. Ошибка заключается в следующем:

An existing connection was forcibly closed by the remote host

Трассировки стека:

[SocketException (0x2746): An existing connection was forcibly closed by the remote host]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +249

[IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +8420333
   System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count) +57
   System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) +243
   System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) +470
   System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest) +8552078
   System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) +230
   System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) +645
   System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) +9
   System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) +87
   System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) +1467
   System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) +84
   System.Net.ConnectStream.WriteHeaders(Boolean async) +816

[WebException: The underlying connection was closed: An unexpected error occurred on a send.]
   System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +3407972
   System.Net.WebClient.DownloadData(Uri address) +214
   Telerik.Web.UI.ExportInfrastructure.Image.GetImageFromUrl() +226
   Telerik.Web.UI.ExportInfrastructure.XlsBiffRenderer.CreateWorksheet(Table tbl, Workbook wb) +2238
   Telerik.Web.UI.ExportInfrastructure.XlsBiffRenderer.Render() +198
   Telerik.Web.UI.Grid.Export.TableViewExporter.ExcelExportRenderForm(HtmlTextWriter nullWriter, Control form) +1057
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +131
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +151
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +49
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +150
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +131
   System.Web.UI.Page.Render(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +150
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5363

Это динамически создаваемая сетка, и раньше она работала на старом сервере.

Я точно сузил его до следующего кода. Когда я включаю полный URL-адрес (который представляет собой ashx, который генерирует изображение), он терпит неудачу. Когда я исключаю "https://www.someserver.com", он работает нормально, но не экспортирует изображение в BIFF.

GridImageColumn gci = new GridImageColumn();
    gridPreview.MasterTableView.Columns.Add(gci);
    gci.HeaderText = fieldName;
    gci.UniqueName = fieldName.Replace(" ", string.Empty);
    gci.FooterText = "image";
    gci.DataImageUrlFormatString = string.Format("https://www.someserver.com/{0}{{0}}/w100/h100", cm.SiteInfo.FriendlyName);
    gci.DataImageUrlFields = new string[] { fieldName };
    gci.ImageWidth = 100;
    gci.ItemStyle.Width = 100;
    gci.HeaderStyle.Width = 100;
    gci.AllowFiltering = false;

Я потратил целый день на то, чтобы рвать на себе волосы, и мне нужен быстрый ответ, чтобы решить эту проблему... Есть ли настройка сервера в IIS 8, которая мне нужна для предотвращения сбоя обратных вызовов к изображению? Это проблема с разрешениями, когда код вызывает сгенерированное изображение, у него нет доступа к изображению (звучит смешно, но сейчас я хватаюсь за соломинку).

Я попытался увеличить время ожидания (что, как я подозревал, не поможет, так как оно довольно быстро выходит из строя). Я провел сеанс отладки, и он падает прямо во время пререндеринга. Копаясь в Telerik с помощью JustDecompile, я обнаружил, что он выполняет свою работу на пререндере, но я думаю, что гоняюсь за своим хвостом за чем-то, чего мне не хватает. Ведь если он работает на одном сервере, он должен работать и на том, куда я его перенес?

Он отлично работает при стандартном экспорте в Excel, но, конечно, изображения не встраиваются.

Редактировать: я повторно активировал старый сервер, используя старую базу данных (с изображениями, которые все еще загружаются с нового сервера), и он не работает по той же причине. Это исключает все, кроме того, как Телерик извлекает изображения с нового сервера. Я могу вернуться, отредактировать все, включая изображения, чтобы увидеть, изменится ли ошибка.

Редактировать еще раз. Я изменил все обратно на старом сервере, и единственная вещь, которая устранила ошибку, — это изменение URL-адреса изображения на локальные URL-адреса на старом сервере. ТАК - это означает, что это как-то связано с захватом изображений на новом сервере. Тааак - какая разница? Это защита от DDOS? Это разрешения? (редактировать: нет, это не так - я использовал пожарный шланг «все» для чтения / записи и та же проблема) Это сводит меня с ума.


person dudeinco    schedule 20.12.2015    source источник


Ответы (1)


Как оказалось, это была ошибка в коде 2015 года. С выпуском Telerik Tools в первом квартале 2016 года эта проблема, похоже, решена. После обновления теперь я могу экспортировать в SSL.

person dudeinco    schedule 17.01.2016