c# - 直接从另一个 Web API Controller 内部调用另一个 Web API Controller

标签 c# asp.net-web-api

给定一个 Controller Proxy 和一个 GetInformation Action 。我希望能够调用 Users Controller 的方法 GetInformation。两个 WebAPI Controller 都在同一个项目中,但直接调用如

var controller = new UsersController();
return controller.GetInformation(request);

不起作用。

签名是:

public HttpResponseMessage GetInformation(InformationRequest request)

我不想做一个完整的重定向响应,因为我不想在外部暴露 UserController 路由。这需要是一个内部调用。

最佳答案

对于那些想要在不同 Controller 中解决此 API 到 API 方法的人,我们找到了一个可行的解决方案。最初的尝试很接近,只是遗漏了一些东西。

var controller = new UserAccountController
{
   Request = new HttpRequestMessage(HttpMethod.Post, Request.RequestUri.AbsoluteUri.Replace("/current/route", "/route/to_call"))
};
controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
return controller.GetInformation(request);

在执行此操作时,它允许构建目标 Controller 并直接调用所需的方法。这里最复杂的是Uri调整。

关于c# - 直接从另一个 Web API Controller 内部调用另一个 Web API Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139952/

相关文章:

c# - Azure 构建 - 命名空间 'OpenApi' 中不存在类型或命名空间名称 'Microsoft'

asp.net-web-api - Veracode 问题 CWE 915

asp.net - Json 无法通过 azure 工作,而是在本地工作

c# - ASP.NET 身份和 ASP.NET 成员身份提供程序 "Mashup"

c# - 使用 C# 将 DateTime 格式转换为 SQL 格式

c# - LINQ 查询 OrderBy 不起作用

c# - 一律取消task.delay还是用exception来控流?

c# - Azure 平台/Dotnet 核心上可靠的图像处理

c# - 使用 Web API 自托管时如何从 HttpClientHandler.CookieContainer 获取 cookie?

asp.net-web-api - Blazor API 项目可以与客户端共享相同的本地主机端点吗?