ASP.NET CORE 2.2 调用 Web api 目标 .net 框架未被调用

ASP.NET CORE 2.2 call to web api targeting .net framework does not get called

我有一个解决方案,其中包含一个针对 .Net framework 4.7 的 class 库和另一个带有 ASP.NET Core 2.2 的项目。

针对 .Net 框架的 class 库包含控制器,如下所示,带有路由前缀和路由名称

然后在我的 StartUp.cs 中配置了以下内容

在 运行 上,我在 .Net 框架 class 库中调用 api 调用没有 return 来自网络的响应 api 而不是 return 默认的 index.html 内容。

我错过了什么?

您的路线有误。将路由参数标记为可选的正确方法是使用 ?:

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

默认,应该在动作参数上:

public HttpResponseMessage Get(string cKey = null)

然后,您可以只请求 List,它将触发此操作,并且 cKey 将为空,因为未提供。正如您现在所拥有的,cKey 参数是必需的,因此您只能通过 List/foo 到达此路线,其中 "foo" 是您的 cKey 值。

我在第一个屏幕上看到 class 类似 RoutePrefixApiControllerHttpResponseMessage。他们来自 classic Asp.Net WebApi。在 Asp.Net Core 中不可能使用旧的 ApiControllers。这意味着您需要使用 Asp.net Core 重写控制器。

Asp.net 核心项目可能同时针对 .net core 和 classic .Net Framework。如果您确实需要针对 .Net Framework,您可以创建一个针对 .Net Framework 4.7 的 class 库,在那里创建 Asp.Net Core 控制器,然后在 Asp.Net Core 项目中使用该库作为外部 dll。