ASP.NET CORE 2.2 вызов веб-API таргетинга .NET Framework не вызывается - PullRequest
0 голосов
/ 22 января 2019

У меня есть решение с библиотекой классов, нацеленной на .Net Framework 4.7, и другой проект с ASP.NET Core 2.2.

Библиотека классов, нацеленная на .Net Framework, содержит контроллеры, как показано ниже вместе с маршрутом.префикс и название маршрута

enter image description here

А затем в моих файлах StartUp.cs я настроил следующее enter image description here

При запуске этого я вызываю API в библиотеке классов .Net Framework, этот вызов не возвращает ответ от Web API, а возвращает содержимое index.html по умолчанию.

enter image description here Чего мне не хватает в этом?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Я вижу на первом экране классы вроде RoutePrefix, ApiController, HttpResponseMessage. Они из классики Asp.Net WebApi. Нельзя использовать старые ApiControllers в Asp.Net Core. Это означает, что вам нужно переписать свои контроллеры, используя Asp.net Core.

Основные проекты Asp.net могут ориентироваться как на .net core, так и на классические .Net Framework. Если вам действительно необходимо настроить таргетинг на .Net Framework, вы можете создать библиотеку классов, нацеленную на .Net framework 4.7, создать там Asp.Net Core контроллеры и затем использовать эту библиотеку в Asp.Net Core проекте в качестве внешней библиотеки DLL.

0 голосов
/ 22 января 2019

У вас есть ошибка в вашем маршруте. Правильный способ пометить параметр маршрута как необязательный - с помощью ?:

[Route("List/{cKey?}"]

Значение по умолчанию должно быть в параметре действия:

public HttpResponseMessage Get(string cKey = null)

Затем вы можете запросить List, и оно выполнит это действие, и cKey будет нулевым, поскольку оно не было предоставлено. Теперь у вас есть параметр cKey, поэтому вы можете достичь этого маршрута только через List/foo, где "foo" - это ваше значение cKey.

...