Asp.net 错误:过程或函数X需要参数@Username,但未提供该参数
我正在尝试使用此方法调用soap Web服务。但是,当我点击要执行登录服务的按钮时,会出现以下错误: 服务器无法处理请求。System.Data.SqlClient.SqlException:过程或函数“spGetUserByUsername”需要参数“@Username”,但未提供该参数 以下是services.js中涉及的代码:Asp.net 错误:过程或函数X需要参数@Username,但未提供该参数,asp.net,angularjs,ionic-framework,Asp.net,Angularjs,Ionic Framework,我正在尝试使用此方法调用soap Web服务。但是,当我点击要执行登录服务的按钮时,会出现以下错误: 服务器无法处理请求。System.Data.SqlClient.SqlException:过程或函数“spGetUserByUsername”需要参数“@Username”,但未提供该参数 以下是services.js中涉及的代码: .factory('loginService', ['$soap', function($soap){ var base_url = 'http://localho
.factory('loginService', ['$soap', function($soap){
var base_url = 'http://localhost/UserService3/WebService1.asmx';
return {
GetUser: function(uname){
return $soap.post(base_url,"getUserByUsername", { Username: uname});
}
};
}])
下面是controller.js中涉及的代码:
$scope.enterlogin = function(usern,pass)
{
loginService.GetUser(usern).then(function(response)
{
console.log('user is = ' + response);
});
}
如何传递数据
更新:以下是涉及的服务器端代码:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getUserbyUsername(string uname)
{
string cs = "Data Source =.; Initial Catalog = UsersDB; Integrated Security = True";
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spGetUserByUsername", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter(@"Username", uname);
cmd.Parameters.Add(parameter);
User user = new User();
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
user.Username = reader["Username"].ToString();
user.Password = reader["Password"].ToString();
}
con.Close();
return new JavaScriptSerializer().Serialize(user);
}
}
该错误似乎与服务器端代码有关,您正在调用数据库中的存储过程,但没有提供所需的参数。@Lex hi,我添加了服务器端代码您的web服务需要一个名为
uname
的参数,但您正在发送一个参数为Username
的对象。我猜如果你要调试服务器端代码,你会得到一个空值?@Lex,是的,我曾经得到过一个空值。谢谢你的澄清。不过,响应返回的是未定义的。老实说,我对$soap.post
不是非常熟悉,因为我们只使用$http.post
,但我猜$soap.post
返回一个承诺,所以您需要实现.then()
,.error()
以及可能的.finally()
方法。你应该能够很容易地找到这方面的例子。