Ничего не могу получить от .Core Web API - PullRequest
0 голосов
/ 10 марта 2019

Итак, я столкнулся со следующей проблемой.

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 прекрасно видят API и могут отправлять запросы без проблем.

Чего мне не хватает?

1 Ответ

0 голосов
/ 10 марта 2019

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 (спасибо Кирк Ларкин ).

...