Мы перенесли наше приложение .NET Framework на .NET Core 8.0. Наша система, которая безупречно работала с HttpWebRequest .NET Framework, получает ошибку, как показано в трассировке ниже, при переключении на HttpClient из .NET Core.
Клиент: Windows Server — .NET Core 8.0
Сервер: Linux Java
При отправке запроса произошла ошибка.
/>System.Net.Http.HttpRequestException: произошла ошибка при отправке
запроса.
---> System.Net.Http.HttpIOException: ответ завершился преждевременно. (ResponseEnded)
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage
request, Boolean async, CancellationToken cancelToken) ---
Конец внутренней трассировки стека исключений --- at
System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage запрос,
Boolean async, CancellationToken cancelToken) в
System.Net.Http.AuthenticationHelper.SendWithNtAuthAsync(HttpRequestMessage
запрос, Uri authUri, Boolean async, учетные данные ICredentials, Boolean
isProxyAuth, соединение HttpConnection, HttpConnectionPool
connectionPool, CancellationToken cancelToken) в
System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage
request, Boolean async, Boolean doRequestAuth, CancellationToken
cancellationToken) в
System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage
request, Uri authUri, Boolean async, учетные данные ICredentials, Boolean
preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth,
пул HttpConnectionPool, CancellationToken cancelToken) at
System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage
запрос, Boolean async, CancellationToken cancelToken) at
System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage
запрос, Boolean async, CancellationToken cancelToken) at
Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.g__Core|5_0(HttpRequestMessage
запрос, логическое значение useAsync, CancellationToken cancelToken) at
/>Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.g__Core|5_0(HttpRequestMessage
запрос, логическое значение useAsync, CancellationToken cancelToken) в
System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage
request, HttpCompletionOptioncompleteOption,
CancellationTokenSource cts, Boolean DisposeCts,
CancellationTokenSource pendingRequestsCts, CancellationToken
originalCancellationToken)
Код:
using(var serviceScope = SiriusServiceScopeFactory.Instance.CreateScope()) {
var client = serviceScope.GetHttpClient(HttpClientConstants.CoreHttpClient);
using(var httpRequest = new HttpRequestMessage(HttpMethod.Post, requestUri)) {
SetHttpHeaders(httpRequest);
byte[] zippedBytes;
using(var ms = new MemoryStream()) {
CoreGZipUtils.Zip(ms, request);
zippedBytes = ms.ToArray();
}
HttpContent content = new ByteArrayContent(zippedBytes);
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
httpRequest.Content = content;
using(var cts = new CancellationTokenSource(timeout)) {
HttpResponseMessage response = null;
try {
response = await client.SendAsync(httpRequest, cts.Token).ConfigureAwait(false);
} catch (TaskCanceledException ex) {
throw new SrSystemException(string.Empty, string.Format("Timeout exception occured while connecting to plm. PLM Uri:{0}, Service Name:{1}, Timeout:{2} second", this.plmUri, this.corePlmClientHeaderInfo.ServiceName, timeout));
}
return await ReadHttpResponseFromMessageAsync < TResponse > (response).ConfigureAwait(false);
}
}
}
internal static IServiceCollection AddCoreHttpClient(this IServiceCollection services) {
services.AddHttpClient(HttpClientConstants.CoreHttpClient).ConfigurePrimaryHttpMessageHandler(x =>
new HttpClientHandler {
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
UseCookies = false,
AllowAutoRedirect = false,
UseDefaultCredentials = true,
});
return services;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... rematurely
HttpClient – HttpIOException: ответ завершился преждевременно ⇐ C#
Место общения программистов C#
-
Anonymous
1765970259
Anonymous
Мы перенесли наше приложение .NET Framework на .NET Core 8.0. Наша система, которая безупречно работала с HttpWebRequest .NET Framework, получает ошибку, как показано в трассировке ниже, при переключении на HttpClient из .NET Core.
Клиент: Windows Server — .NET Core 8.0
Сервер: Linux Java
При отправке запроса произошла ошибка.
/>System.Net.Http.HttpRequestException: произошла ошибка при отправке
запроса.
---> System.Net.Http.HttpIOException: ответ завершился преждевременно. (ResponseEnded)
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage
request, Boolean async, CancellationToken cancelToken) ---
Конец внутренней трассировки стека исключений --- at
System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage запрос,
Boolean async, CancellationToken cancelToken) в
System.Net.Http.AuthenticationHelper.SendWithNtAuthAsync(HttpRequestMessage
запрос, Uri authUri, Boolean async, учетные данные ICredentials, Boolean
isProxyAuth, соединение HttpConnection, HttpConnectionPool
connectionPool, CancellationToken cancelToken) в
System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage
request, Boolean async, Boolean doRequestAuth, CancellationToken
cancellationToken) в
System.Net.Http.AuthenticationHelper.SendWithAuthAsync(HttpRequestMessage
request, Uri authUri, Boolean async, учетные данные ICredentials, Boolean
preAuthenticate, Boolean isProxyAuth, Boolean doRequestAuth,
пул HttpConnectionPool, CancellationToken cancelToken) at
System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage
запрос, Boolean async, CancellationToken cancelToken) at
System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage
запрос, Boolean async, CancellationToken cancelToken) at
Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.g__Core|5_0(HttpRequestMessage
запрос, логическое значение useAsync, CancellationToken cancelToken) at
/>Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.g__Core|5_0(HttpRequestMessage
запрос, логическое значение useAsync, CancellationToken cancelToken) в
System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage
request, HttpCompletionOptioncompleteOption,
CancellationTokenSource cts, Boolean DisposeCts,
CancellationTokenSource pendingRequestsCts, CancellationToken
originalCancellationToken)
Код:
using(var serviceScope = SiriusServiceScopeFactory.Instance.CreateScope()) {
var client = serviceScope.GetHttpClient(HttpClientConstants.CoreHttpClient);
using(var httpRequest = new HttpRequestMessage(HttpMethod.Post, requestUri)) {
SetHttpHeaders(httpRequest);
byte[] zippedBytes;
using(var ms = new MemoryStream()) {
CoreGZipUtils.Zip(ms, request);
zippedBytes = ms.ToArray();
}
HttpContent content = new ByteArrayContent(zippedBytes);
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
httpRequest.Content = content;
using(var cts = new CancellationTokenSource(timeout)) {
HttpResponseMessage response = null;
try {
response = await client.SendAsync(httpRequest, cts.Token).ConfigureAwait(false);
} catch (TaskCanceledException ex) {
throw new SrSystemException(string.Empty, string.Format("Timeout exception occured while connecting to plm. PLM Uri:{0}, Service Name:{1}, Timeout:{2} second", this.plmUri, this.corePlmClientHeaderInfo.ServiceName, timeout));
}
return await ReadHttpResponseFromMessageAsync < TResponse > (response).ConfigureAwait(false);
}
}
}
internal static IServiceCollection AddCoreHttpClient(this IServiceCollection services) {
services.AddHttpClient(HttpClientConstants.CoreHttpClient).ConfigurePrimaryHttpMessageHandler(x =>
new HttpClientHandler {
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
UseCookies = false,
AllowAutoRedirect = false,
UseDefaultCredentials = true,
});
return services;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79848289/httpclient-httpioexception-the-response-ended-prematurely[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия