Как вызвать метод CreateUser из веб-ссылки - PullRequest
2 голосов
/ 27 ноября 2011

У меня закончились попытки попробовать, поэтому я надеюсь, что кто-нибудь может мне помочь с этим.

Я создаю страницу "Регистрация". Когда пользователь нажимает кнопку «Зарегистрироваться», его информация (электронная почта, имя пользователя, пароль) должна быть сохранена в базе данных Access.

Я создал веб-ссылку (http://localhost:36938/usconWebServices/membershipService.asmx) и пытаюсь вызвать функцию «CreateUser» в register.aspx.cs, но, похоже, не могу понять, что это правильно.

Вот что у меня есть для 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");
        }
    }
}

3-я строка, начинающаяся с «if ...», выдаёт мне ошибку: «Нет больше, для метода« CreateUser »требуется 3 аргумента». Я попытался вывести параметры и всю строку, но все равно не сработало.

А вот что у меня есть для membersService.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;
}

Любая помощь или совет по этому вопросу будет принята с благодарностью!

1 Ответ

1 голос
/ 27 ноября 2011

Функция CreateUser () ожидает четыре параметра (пользователь newUser, строка emailAddress, строка username, строка userPassword). Но когда вы вызываете этот метод, вы передаете только три параметра.

Изменить

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

чтобы передать все четыре параметра.

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)

, который принимает только три параметра

...