【发布时间】:2014-05-15 03:55:00
【问题描述】:
问题陈述:
通过 WCF 服务对登录凭据进行身份验证。基于登录 ID 身份验证,在另一个控制器中调用用于将客户 ID 分配给会话的方法给出空引用异常。我做错了什么?
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);
}
一般控制人:
这里我无法分配从登录控制器中的 WCF 服务获取的值,将对象引用未设置为通用控制器中的对象异常的实例。
public void GlobalSessionCustomerUserDetails(dynamic varLoginCustomerUserDetails)
{
Session["TempCustDetails"] = varLoginCustomerUserDetails[0].LoginID;
}
【问题讨论】:
-
对我来说,
varLoginCustomerUserDetails似乎是 null 或一个空列表。 -
@DZL-否,varLoginCustomerUserDetails 有价值。我已在即时窗口中签入。离开varLoginCustomerUserDetails,即使我分配任何字符串(例如:Session [“TempCustDetails”] =“Hi”)它也会显示相同的错误。没有任何值被分配给会话,为什么??
-
你在哪里声明
objLoginDC在你的登录控制器中?那可能是空的吗? -
@DStanley-No,varLoginCustomerUserDetails[0].LoginID 具有价值。我已在即时窗口中检查。离开varLoginCustomerUserDetails,即使我分配任何字符串(例如:Session [“TempCustDetails”] =“Hi”)它也会显示相同的错误。没有任何值被分配给会话,为什么??
标签: c# asp.net .net asp.net-mvc wcf