在asp.net web应用程序上使用WCF服务应用程序登录

本文关键字:应用程序 WCF 服务 登录 程序上 net web 应用 asp | 更新日期: 2023-09-27 17:51:19

我目前正在为一个学校项目开发一个约会网站,我目前正在尝试为它制作一个登录功能。我们不应该使用自动注册和登录功能。

我们与数据库的任何联系都应该通过WCF服务应用程序。我知道如何在不使用WCF的情况下实现它,但我现在需要使用它,搜索后我在谷歌上找不到这个。

 public bool login(string UserName, string PassWord, bool isActive = true) {
      try {
           DALDataContext db = new DALDataContext();
           var qry = from m in db.tblUsers
                      where m.userName == UserName && m.password == PassWord && m.isActive == isActive
                      select m;
            if (qry.Count() > 0) {
                return true;
            } else {
                return false;
            }
        }
        catch (Exception) {
            return false;
        }
    }

这就是我怎么做的,所以这应该工作,如果我在我的web应用程序中实现它这样的:

ServiceReference1.Service1Client obj = new ServiceReference1.Service1Client();
protected void btnLoginUser_Click1(object sender, EventArgs e) {
     try {
          string UserName = txtUserName.Text;
          string PassWord = txtPassWord.Text;
          obj.login(UserName, PassWord);
           if (true) {
               Session["me"] = UserName;
               Response.Redirect("~/MyProfile.aspx");
               }
      }
      catch (Exception){
       }
   }

我已经用这个工作了几个小时,这个工作的注册部分…所以我真的做错了什么。我使用Visual Studio 2010和SQL Server 2008 R2。

(解决)

这是我如何解决它

protected void btnLoginUser_Click1(object sender, EventArgs e)
    {
        try
        {
            string UserName = txtUserName.Text;
            string PassWord = txtPassWord.Text;
            bool isActive = true;

            if (obj.login(UserName, PassWord, isActive))
            {
                Session["me"] = UserName;
                Response.Redirect("~/MyProfile.aspx");
            }
            else
            {
                lblErr.Text = "fail";
            }
            }
        catch (Exception)
        {
        }
    }
}

}

在asp.net web应用程序上使用WCF服务应用程序登录

您忽略了登录方法的返回值:

obj.login(UserName, PassWord); // <-- returns true/false.
if (true) // <-- Why?
{ 
    ...

你是故意的吗

if (obj.login(UserName, PassWord))
{
     Session["me"] = UserName;
     Response.Redirect("~/MyProfile.aspx");
} ...

建议按名称从WCF服务返回用户,如:

public tblUser login(string UserName);

在客户端,您可以通过名称检索用户:

var user = obj.login(UserName);
if (user != null && user.password == txtPassWord.Text)
  DoLogin();
else
  ShowError();