Flurl создает исключение (MoveNext ()) - PullRequest
2 голосов
/ 15 мая 2019

Я пытаюсь вызвать действие POST Web API (.Net Core) из приложения WinForms (.Net Framework 4.7) через Flurl. Однако, когда я пытаюсь отладить исключение, которое бросает Flurl, мой запрос даже не входит в сам контроллер.

Попытка отладки проблемы построчно не помогла. Я полагаю, потому что Web API и WinForms - это два разных проекта в одном решении, я не могу войти в отладку из формы в контроллер?

   at Flurl.Http.FlurlRequest.<HandleExceptionAsync>d__23.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Flurl.Http.FlurlRequest.<SendAsync>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Flurl.Http.FlurlRequest.<SendAsync>d__19.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Flurl.Http.HttpResponseMessageExtensions.<ReceiveJson>d__0`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at BTM.WinUI.APIService.<Insert>d__12`1.MoveNext() in C:\Users\User\Documents\Visual Studio 2019\Projects\APITest\APITest.WinUI\APIService.cs:line 61

Обычно я создаю объект класса, который я создал, и вызываю службу API:

var entity = new UserRegistrationModel
{
        Username = "test",
        Email = "test@test.com",
        Password = "test",
        PasswordConfirmation = "test",
        Roles = new List<int>()
};
entity.Roles.Add(1);
entity.Roles.Add(2);

await _service.Insert<User>(entity);

Вот как выглядит мой звонок:

public async Task<T> Insert<T>(object request)
{
        string url = "https://localhost:44365/api/users";
        return await url.PostJsonAsync(request).ReceiveJson<T>();
}

Мой контроллер должен обработать его, добавив нового пользователя в базу данных и вернув объект User, но код метода никогда не выполняется.

[HttpPost]
public User Post(UserRegistrationModel request)
{
        return _service.Register(request);
}

1 Ответ

1 голос
/ 17 мая 2019

Возможно, Flurl не может отправить запрос POST на ваш локальный хост из-за HTTPS. Попробуйте отключить SSL в своем проекте ASP NET Core Web API.

...