Переоборудовать System.net.http.httprequestexception: «Отказ подключения». Почему исключение брошено и как его решить?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Переоборудовать System.net.http.httprequestexception: «Отказ подключения». Почему исключение брошено и как его решить?

Сообщение Anonymous »

Я использую пакет Refit в проекте .net Maui, чтобы обеспечить удобный доступ к серверу для авторизованного пользователя. Мой сервер ASP.NET CORE API. Я все еще просто к этому привык, поэтому я не знаю всех тонкостей. Я сделал все в соответствии с примером из YouTube, теоретически, он должен был работать: < /p>
Здесь отправляется запрос с учетом токена: < /p>

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

public class FirebaseAuthHttpMessageHandler : DelegatingHandler
{
private readonly IGoogleAuthenticationService _googleAuthenticationService;

public FirebaseAuthHttpMessageHandler(IGoogleAuthenticationService googleAuthenticationService)
{
_googleAuthenticationService = googleAuthenticationService;
}

protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
string? firebaseToken = await _googleAuthenticationService.GetFreshToken();

if (firebaseToken != null)
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", firebaseToken);

return await base.SendAsync(request, cancellationToken);
}
}
< /code>
Мой запрос: < /p>
public interface IGetSummaryFromChatGPTQuery
{
[Post("/api/openai/summary")]
Task Execute([Body] SummaryRequest request);
}
< /code>
Использование впрыскивания зависимости, я загружаю все это в проект: < /p>
builder.Services.AddTransient();

builder.Services.AddRefitClient().
ConfigureHttpClient(c => c.BaseAddress = new Uri(serverBaseURL)).
AddHttpMessageHandler();
< /code>
Модель для отправки и получения данных: < /p>
public class SummaryRequest
{
public string Content { get; set; } = string.Empty;
public string Result { get; set; } = string.Empty;
public string Error { get; set; } = string.Empty;
}
< /code>
Служба, в которой запрос выполняется с помощью запроса: < /p>
public class OpenAIAPIRequestService : IOpenAIAPIRequestService
{
private readonly IGetSummaryFromChatGPTQuery _getSummaryFromChatGPTQuery;

public OpenAIAPIRequestService(
IGetSummaryFromChatGPTQuery getSummaryFromChatGPTQuery)
{
_getSummaryFromChatGPTQuery = getSummaryFromChatGPTQuery;
}

public async Task  GetSummaryAsync(string content)
{
var requestData = new SummaryRequest
{
Content = content
};

SummaryRequest response;

try
{
response = await _getSummaryFromChatGPTQuery.Execute(requestData);

if (!string.IsNullOrWhiteSpace(response.Error))
throw new Exception(response.Error);
}
catch (Exception)
{
throw;
}

return response;
}
}
< /code>
Program.cs
проекта Web API:
using Data_Organizer_Server.Interfaces;
using Data_Organizer_Server.Services;
using FirebaseAdmin;
using FirebaseAdminAuthentication.DependencyInjection.Extensions;
using Google.Apis.Auth.OAuth2;

namespace Data_Organizer_Server
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

builder.Services.AddAuthorization();

builder.Services.AddSingleton(FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.FromJson(builder.Configuration.GetValue("FIREBASE_CONFIG"))
}));
builder.Services.AddFirebaseAuthentication();

builder.Services.AddScoped();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Run();
}
}
}
< /code>
Controller:
using Data_Organizer_Core;
using Data_Organizer_Server.Interfaces;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace Data_Organizer_Server.Controllers
{
[Authorize]
[ApiController]
[Route("api/openai")]
public class OpenAIController : ControllerBase
{
private readonly IOpenAIService _openAIService;

public OpenAIController(IOpenAIService openAIService)
{
_openAIService = openAIService;
}

[HttpPost("summary")]
public async Task GetSummary([FromBody] SummaryRequest request)
{
if (request == null || string.IsNullOrWhiteSpace(request.Content))
{
return BadRequest("Порожній запит або відсутній контент!");
}

try
{
request.Result = await _openAIService.GetSummary(request.Content);
return Ok(request);
}
catch (Exception ex)
{
request.Error = ex.Message;
return StatusCode(500, request);
}
}
}
}
< /code>
The error that appears:
System.Net.Http.HttpRequestException: 'Connection failure'.
< /code>
StackTrace:
System.Net.Http.HttpRequestException
Message=Connection failure
Source=Mono.Android
StackTrace:
at Xamarin.Android.Net.AndroidMessageHandler.c__DisplayClass137_0.b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 562
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.c.b__281_0(Object obj)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at Xamarin.Android.Net.AndroidMessageHandler.DoProcessRequest(HttpRequestMessage request, URL javaUrl, HttpURLConnection httpConnection, CancellationToken cancellationToken, RequestRedirectionState redirectState) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 616
at Xamarin.Android.Net.AndroidMessageHandler.DoSendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 482
at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
at Data_Organizer.APIRequestTools.FirebaseAuthHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\APIRequestTools\FirebaseAuthHttpMessageHandler.cs:line 22
at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Refit.RequestBuilderImplementation.c__DisplayClass15_0`2.d[[Data_Organizer_Core.SummaryRequest, Data_Organizer_Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Data_Organizer_Core.SummaryRequest, Data_Organizer_Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in c:\temp\releaser\refit\Refit\RequestBuilderImplementation.cs:line 331
--- End of stack trace from previous location ---
at Refit.Implementation.Generated.Data_OrganizerAPIRequestToolsIGetSummaryFromChatGPTQuery.global::Data_Organizer.APIRequestTools.IGetSummaryFromChatGPTQuery.Execute(SummaryRequest request) in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\obj\Debug\net8.0-android\InterfaceStubGeneratorV2\Refit.Generator.InterfaceStubGeneratorV2\IGetSummaryFromChatGPTQuery.g.cs:line 50
at Data_Organizer.Services.OpenAIAPIRequestService.GetSummaryAsync(String content) in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\Services\OpenAIAPIRequestService.cs:line 35
at Data_Organizer.MVVM.ViewModels.MainPageViewModel.PlayAISummary() in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\MVVM\ViewModels\MainPageViewModel.cs:line 80
at Data_Organizer.MVVM.ViewModels.MainPageViewModel.PlayFeature() in C:\Users\bredu\Documents\ShortNotes\Data_Organizer\MVVM\ViewModels\MainPageViewModel.cs:line 67
at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask) in /_/src/CommunityToolkit.Mvvm/Input/AsyncRelayCommand.cs:line 351
at System.Threading.Tasks.Task.c.b__128_0(Object state)
at Android.App.SyncContext.c__DisplayClass2_0.
b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:line 36
at Java.Lang.Thread.RunnableImplementor.Run() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:line 37
at Java.Lang.IRunnableInvoker.n_Run(IntPtr jnienv, IntPtr native__this) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Java.Lang.IRunnable.cs:line 84
at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V(_JniMarshal_PP_V callback, IntPtr jnienv, IntPtr klazz) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 22
< /code>
At the same time, requests are normal with Postman, they come with a response. That is, in theory, the problem is not on the server side. Although I'm not sure, I'm also a newbie in the Web API topic...
If you have any questions, ask! I'll be glad and grateful if you help me solve this problem.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -is-the-ex
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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