如何使用Web API控制器调用非API控制器功能

时间:2019-05-15 09:33:57

标签: c# asp.net-mvc

我有一个控制器,它的名称是“ AuthController”,它正在被“ BaseController”继承。 “ AuthController”具有参数构造函数以及用于注册用户的方法“ RegisterFromOutside”。下面的代码对于Non Api Controller可以正常工作。

非Api控制器的代码示例:

enter image description here

现在的问题是如何使用API​​控制器调用同一方法?然后从我的移动应用程序访问它(使用相同的实现)。请注意,该项目尚未实现API调用的任何实现。

这是何时出现此错误。错误是

“但是,当我尝试使用参数构造函数从另一个Web API应用程序控制器访问相同的UserServices时。它要求我声明无参数的构造函数。当我这样做时,它根本就不运行参数构造函数,并且返回我收到空引用异常。”

public class ValuesController : ApiController
    {
        UserServices _userServices;

        public ValuesController(
            UserServices userServices)
        {
            _userServices = userServices;
        }

        // POST api/values
        public void Post([FromBody]RegisterViewModel model)
        {
            RegisterFromOutside(model);
        }

        public void RegisterFromOutside(RegisterViewModel model)
        {
            User user = _userServices.Register(model.Username, model.Password, model.Email);
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以在MVC项目中添加API控制器(右键单击文件夹Controllers,选择Add  ->控制器)

adding api controller

我的项目中有方法签名,它执行用户授权,您可以做同样的事情(也可以尝试在经典的非API控制器中做到这一点)

[AllowAnonymous]
        [HttpPost]
        [Route("api/mobile/users/login")]
        public LoginResponseModel Login(LoginRequestModel loginRequestModel)