Соединение закрывается при доступе к минимальному веб-APIC#

Место общения программистов C#
Ответить
Anonymous
 Соединение закрывается при доступе к минимальному веб-API

Сообщение Anonymous »

У меня есть приложение WPF, которое размещает минимальный веб -API. Чтобы запустить минимальный веб -API, используется следующий код: < /p>

Код: Выделить всё

public async Task StartWebApi(IEnumerable urls, CancellationToken token)
{
var builder = WebApplication.CreateBuilder();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

app.UseSwagger();
app.UseSwaggerUI();

app.MapGet("/some/route", _someService.DoSomething);
app.MapPost("/some/other/route", _someService.DoSomethingElse);

foreach (var url in urls)
{
app.Urls.Add(url);
}

await app.StartAsync(token);
}
< /code>
На другом компьютере работает другое приложение, которое обращается к минимальному веб -API. Это старое приложение, которое работает на .NET Framework и не имеет асинхронного/ожидания. Из -за этого он использует эти методы для доступа к минимальному веб -API: < /p>
private string MakeHttpGetRequest(string url, int retries = 5)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "GET";

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream dataStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(dataStream))
{
string text = reader.ReadToEnd();
return text;
}
}
}
}
catch (WebException ex)
{
if (retries > 0)
{
_logger.Debug("Exception at HTTP Get Request: " + ex.ToString());
retries--;
Thread.Sleep(1000);
return MakeHttpGetRequest(url, retries);
}
else
{
throw;
}
}
}

private string MakeHttpPostRequest(string url, string jsonData, int retries = 5)
{
try
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";

if (!string.IsNullOrWhiteSpace(jsonData))
{
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(jsonData);
}
}

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream dataStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(dataStream))
{
return reader.ReadToEnd();
}
}
}
}
catch (WebException ex)
{
if (retries > 0)
{
_logger.Debug("Exception at HTTP Post Request: " + ex.ToString());
retries--;
Thread.Sleep(1000);
return MakeHttpPostRequest(url, jsonData, retries);
}
else
{
throw;
}
}
}
Время от времени я получаю исключение о том, что удаленный хост закрыл соединение. Вот почему бывают повторы. Но повторные попытки устраняют только эффект, а не основную причину. В чем может быть причина исключений?

Подробнее здесь: https://stackoverflow.com/questions/797 ... al-web-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»