gpt4 book ai didi

c# - 如何从 webreference 调用 CreateUser 方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:32 25 4
gpt4 key购买 nike

我已经没有什么可以尝试的了,所以我希望有人能帮我解决这个问题。

我正在创建一个“注册”页面。当用户单击“注册”按钮时,他们的信息(电子邮件、用户名、密码)需要存储到 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;
}

如有任何帮助或建议,我们将不胜感激!

最佳答案

CreateUser() 函数需要四个参数(用户 newUser、字符串 emailAddress、字符串用户名、字符串 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)

只接受三个参数

关于c# - 如何从 webreference 调用 CreateUser 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8283283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com