web api

时间:2016-05-19 06:54:24

标签: c# asp.net asp.net-web-api asp.net-web-api2

我正在使用web api并创建登录功能。(n层架构)。 我在登录控制器中收到空响应。

首先,我想确认我的代码逻辑是否正确,如果它是正确的,那么为什么我在

中获得响应null
 HttpResponseMessage response = client.GetAsync("api/Login/Login").Result;

我的项目UI登录控制器代码 LoginCOntroller.cs

   [HttpPost]
        public ActionResult Login(LoginViewModel loginViewModel)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("http://localhost:63465/");

            HttpResponseMessage response = client.GetAsync("api/Login/Login").Result;
            if (response.IsSuccessStatusCode)
            {
                return RedirectToActionPermanent("Index", "Project");
            }
            return View(loginViewModel);
        }

我的Api登录控制器代码 LoginController.cs

public HttpResponseMessage Login(LoginViewModel loginViewModel)
{
    if (ModelState.IsValid)
    {
        UserEntity userEntity = new UserEntity();
        userEntity.Email = loginViewModel.UserName;
        userEntity.Password = loginViewModel.Password;

        var login = new LoginManager().LoginAuthentication(userEntity);

        if (login != null)
        {
            return Request.CreateResponse(login);
        }
    }

    return Request.CreateResponse(true);
}

我的登录管理员课程 LoginManager.cs

  public class LoginManager
    {

    public UserEntity LoginAuthentication(UserEntity userDetails)
    {
        var userDetail = new LoginDa().LoginAuthentication(userDetails);
        return userDetail;
    }
}

我的数据访问层 LoginDa.cs

public class LoginDa
{
    public UserEntity LoginAuthentication(UserEntity login)
    {
        using (var context = new ArcomDbContext())
        {
            var loginDetail = context.userInformation.FirstOrDefault(p => p.Email == login.Email && p.Password == login.Password);
            return loginDetail;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

GetAsync方法只会在您的API上调用GET方法,因此如果您在API中使用[HttpPost](它应该是)为您的方法添加前缀,则需要调用{{1}的POST方法} class(例如 - HttpClient)。

其次,您没有遵循PostAsJsonAsync / async模式?您正在调用await方法,但不会等待它。

此处有更多信息http://blog.stephencleary.com/2012/02/async-and-await.html

以下所述内容是代码的外观

async

你还能用fiddler / Postman给你打电话吗?