2

試すものがなくなったので、誰かがこれを手伝ってくれることを願っています。

「登録」ページを作成しています。ユーザーが [登録] ボタンをクリックすると、ユーザーの情報 (電子メール、ユーザー名、パスワード) が Access データベースに保存される必要があります。

Web 参照 ( http://localhost:36938/usconWebServices/membershipService.asmx ) を作成し、register.aspx.cs で "CreateUser" 関数を呼び出そうとしましたが、うまくいかないようです。

register.aspx.cs の内容は次のとおりです。

protected void btnRegister_Click(object sender, EventArgs e)
{
    wrefMembership.membershipService ws = new wrefMembership.membershipService();

    if (ws.CreateUser(txtEmailReg.Text, txtUsernameReg, txtPasswordReg))
    {

        try
        {
            Response.Redirect("mainContent.aspx");
        }
        catch (Exception er)
        {
            Response.Write("<b>Something really bad happened... Please try again.</b>");
        }
        finally
        {
            Response.Redirect("~/membersOnly/mainContent.aspx");
        }
    }
}

「if...」で始まる 3 行目で、「No over for method 'CreateUser' takes 3 arguments.」というエラーが表示されます。パラメータと行全体を取り出してみましたが、それでもうまくいきませんでした。

そして、ここに私がmembershipService.csのために持っているものがあります:

[WebMethod(Description = "Create a new user, pass on a user object, returns a result string with information about processing result")]
public string CreateUser(user newUser, string emailAddress, string username, string userPassword)
{
    string query = "";
    DataSet ds = new DataSet();
    DataRow dr;
    int count;
    string result = "";

    try
    {
        //define query
        query = "SELECT * FROM UserInfo WHERE emailAddress='" + newUser.emailAddress + "'";
        ds = DataAccessService.RunSimpleQuery(query);

        if (ds.Tables[0].Rows.Count <= 0)
        {
            dr = ds.Tables[0].NewRow();
            dr["emailAddress"] = newUser.emailAddress;
            dr["username"] = newUser.username;
            dr["userPassword"] = userPassword;
            dr["registerDate"] = DateTime.Now;
            ds.Tables[0].Rows.Add(dr);
            result = DataAccessService.RunInsertCommand(query, ds);

            try
            {
                ds = DataAccessService.RunSimpleQuery(query);
                count = ds.Tables[0].Rows.Count; //last row is the new row!
                if (count > 0)
                {
                    dr = ds.Tables[0].Rows[count - 1];
                    result = "[000] OK: userID=" + dr["userID"].ToString();
                }
                else
                {
                    result = "[004] ERROR: User ID not found"; //user ID not found
                }
            }
            catch (Exception ex)
            {
                result = "ERROR: Could not update database: " + ex.Message + " *** ";
            }
        }
        else
        {
            result = "[003] ERROR: This e-mail account has already been registered with us."; //e-mail account already exists
        }
    }
    catch (Exception ex)
    {
        result = "[002] ERROR: " + query + Environment.NewLine + ex.Message + ex.StackTrace; //error
    }

    return result;
}

これに関するヘルプやアドバイスは大歓迎です!

4

1 に答える 1

1

CreateUser() 関数は、4 つのパラメーター (ユーザー newUser、文字列 emailAddress、文字列 username、文字列 userPassword) を想定しています。ただし、そのメソッドを呼び出すときは、3 つのパラメーターのみを渡します。

変化する

if (ws.CreateUser(txtEmailReg.Text, txtUsernameReg, txtPasswordReg))

4 つのパラメーターすべてを渡します。

user newUser=new Users();
if (ws.CreateUser(newUser,txtEmailReg.Text, txtUsernameReg.Text, txtPasswordReg.Text))

明らかに、ユーザー クラスのオブジェクトである最初のパラメーターがありません。

または、関数定義を変更します

public string CreateUser(user newUser, string emailAddress, string username, string userPassword)

public string CreateUser(string emailAddress, string username, string userPassword)

3つのパラメーターのみを受け入れます

于 2011-11-27T03:29:53.310 に答える