2

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

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

 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)
        {

        }

    }
}

}

4

2 回答 2

5

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

obj.login(UserName, PassWord); // <-- returns true/false.

if (true) // <-- Why?
{ 
    ...

你是不是打算做

if (obj.login(UserName, PassWord))
{
     Session["me"] = UserName;
     Response.Redirect("~/MyProfile.aspx");
} ...
于 2013-01-11T21:10:33.450 回答
-2

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

public tblUser login(string UserName);

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

var user = obj.login(UserName);
if (user != null && user.password == txtPassWord.Text)
  DoLogin();
else
  ShowError();
于 2013-01-11T21:26:23.473 回答