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;
}
}
}
Время от времени я получаю исключение о том, что удаленный хост закрыл соединение. Вот почему бывают повторы. Но повторные попытки устраняют только эффект, а не основную причину. В чем может быть причина исключений?
У меня есть приложение WPF, которое размещает минимальный веб -API. Чтобы запустить минимальный веб -API, используется следующий код: < /p> [code]public async Task StartWebApi(IEnumerable urls, CancellationToken token) { var builder = WebApplication.CreateBuilder(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen();
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; } } }
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; } } } [/code] Время от времени я получаю исключение о том, что удаленный хост закрыл соединение. Вот почему бывают повторы. Но повторные попытки устраняют только эффект, а не основную причину. В чем может быть причина исключений?