Asp.net 错误:过程或函数X需要参数@Username,但未提供该参数

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

我正在尝试使用此方法调用soap Web服务。但是,当我点击要执行登录服务的按钮时,会出现以下错误:

服务器无法处理请求。System.Data.SqlClient.SqlException:过程或函数“spGetUserByUsername”需要参数“@Username”,但未提供该参数

以下是services.js中涉及的代码:

.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()
方法。你应该能够很容易地找到这方面的例子。