Итак, я столкнулся со следующей проблемой.
1) Создание нового приложения asp core 2.1 (шаблон MVC)
2) Добавление нового контроллера:
[EnableCors]
public class ApiController : Controller
{
public string Get(int id)
{
return $"You sent {id}";
}
}
3) Включение CORS в Startup.cs:
app.UseCors(builder => builder.AllowAnyOrigin());
4) Создание классического/.net основного консольного приложения со следующим кодом:
class Program
{
static void Main(string[] args)
{
AsyncMethod();
}
private static async void AsyncMethod()
{
Task.Delay(5000).Wait();
var http = new HttpClient();
var url = "https://localhost:44353/api/get/4";
var response = await http.GetAsync(url);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
Если я добавлю код непосредственно в Main() или даже создам приложение WPF/UWP/WinForms и вставлю туда этот код, все равно ничего не сработает. Оба консольных приложения (классические и .core) просто выходят из отладки без каких-либо исключений или сообщений и только в окне отладки, которое я вижу
The program "[10340] dotnet.exe" ended with code 0 (0x0).
Program "[10340] dotnet.exe: Program Tracing" ended with code 0 (0x0).
Замена этого кода с помощью WebClient не помогла. Более того, с классическим приложением ASP MVC 4 этот код отлично работает, поэтому мое консольное приложение правильное. Но этот код не работает с приложением .Core.
почтальон и RESTed клиент прекрасно видят апи и без проблем могут отправлять запросы.
Что мне не хватает?





http://www.opa.kg/uploads/posts/2009-08/1251278848_podborochka-kartinok_37355_s__22.jpg
В случае если кто-то столкнется с этой проблемой.
1) Удалить строку
app.UseCors(builder => builder.AllowAnyOrigin());
2) Заменить декоратор
[EnableCors]
С участием
[EnableCors("*"]
3) Убедитесь, что вы не пытаетесь использовать async void (спасибо Кирк Ларкин).
Ваша проблема
async void. Вы не ждать для завершения асинхронной задачи перед выходом из приложения.