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 类似 RoutePrefix
、ApiController
、HttpResponseMessage
。他们来自 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。
我有一个解决方案,其中包含一个针对 .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 类似 RoutePrefix
、ApiController
、HttpResponseMessage
。他们来自 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。