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

login メソッドの戻り値を無視しています:

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 に答える