在MVC中为会话分配值,使Object引用未设置为对象异常的实例

时间:2014-04-03 11:05:39

标签: c# asp.net .net asp.net-mvc wcf

问题陈述:

通过WCF服务验证登录凭据。基于登录ID身份验证,在另一个控制器中调用方法将客户ID分配给Session会给出空引用异常。我做错了什么?

WCF服务代码:

我可以根据登录ID验证用户并获取客户详细信息。

public bool IsValid(LoginDC objLoginDC)
{
    try
    {
        var result = dbEntity.CustomerUsers.FirstOrDefault(m => m.LoginID == objLoginDC.LoginID && m.Password == objLoginDC.Password);

        if (result != null)
        {
            return true;
        }
        else
        {
            return false;
        }

    }
    catch
    {
        return false;
    }
}

public IEnumerable<CustomerUserDC> GetLoginCustomerUserDetails(LoginDC objLoginDC)
{

    return (from tu in dbEntity.CustomerUsers.AsEnumerable()
            where tu.LoginID == objLoginDC.LoginID && tu.Password == objLoginDC.Password
            select new CustomerUserDC
            {
               CustomerID = tu.CustomerID,
                UserID = tu.UserID,
                Name = tu.Name

            }).ToList();

}

登录控制器:

我在这里调用登录身份验证并获取WCF的客户详细信息方法。我能够从WCF获取值,但我无法为会话分配值。

public ActionResult Index(LoginModel loginModel, string returnUrl)
{
    if (ModelState.IsValid)
    {
        objLoginDC.LoginID = loginModel.LoginID;
        objLoginDC.Password = loginModel.Password;
        if (objSvcMasterConfig.IsValid(objLoginDC))
        {
            var varLoginCustomerUserDetails=objSvcMasterConfig.GetLoginCustomerUserDetails(objLoginDC);
            objGenController.GlobalSessionCustomerUserDetails(varLoginCustomerUserDetails);
            FormsAuthentication.SetAuthCookie(objLoginDC.LoginID, objLoginDC.RememberMe);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            ModelState.AddModelError("", "The Log In ID or Password provided is incorrect.");
        }
    }

    return View(loginModel);
}

一般控制人:

此处我无法分配从Login Controller中的WCF服务获取的值,从而未将Object引用设置为General Controller中的对象异常实例。

public void GlobalSessionCustomerUserDetails(dynamic varLoginCustomerUserDetails)
{
    Session["TempCustDetails"] = varLoginCustomerUserDetails[0].LoginID;
}

1 个答案:

答案 0 :(得分:0)

尝试将返回类型更改为List&lt;&gt; ... public List GetLoginCustomerUserDetails(LoginDC objLoginDC)