c# – 直接从另一个Web API控制器内部调用另一个Web API控制器

给定控制器代理和GetInformation的动作.我希望能够调用Users控制器的方法GetInformation.两个WebAPI控制器都在同一个项目中,但直接调用如

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

不行.

签名是:

public HttpResponseMessage GetInformation(InformationRequest request)

我不想做完整的重定向响应,因为我不希望外部公开UserController路由.这需要是内部唯一的呼叫.

最佳答案
对于那些想要在不同控制器中将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);

在这样做时,它允许构建目标控制器并直接调用所需的方法.这里最大的复杂性是Uri调整.

转载注明原文:c# – 直接从另一个Web API控制器内部调用另一个Web API控制器 - 代码日志