给定一个 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/