Я пытаюсь вызвать действие 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);
}