Javascript AngularJs发布到具有动态属性的WebApi方法

Javascript AngularJs发布到具有动态属性的WebApi方法,javascript,angularjs,asp.net-mvc,asp.net-web-api,Javascript,Angularjs,Asp.net Mvc,Asp.net Web Api,我的webApi控制器代码如下所示: [HttpPost] public int ValidateUser([FromBody]dynamic credentials) { try { string username = credentials.username; string password = credentials.password;

我的webApi控制器代码如下所示:

 [HttpPost]
        public int ValidateUser([FromBody]dynamic credentials)
        {
            try
            {
                string username = credentials.username;
                string password = credentials.password;
                //do stuff
                }
            }
            catch (Exception ex)
            {
                throw ex;
                return -1;
            }

            return -1; // not valid user
        }
 getAuthorizationStatus: function () {
                    var deferred = $q.defer();
                    $http({
                        method: "POST",
                        url: url,
                        data: {
                            'username': applicationConstants.userName,
                            'password': applicationConstants.userPass
                        },
                        headers: {
                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                    }
                    }).success(deferred.resolve)
                      .error(deferred.reject);
                    return deferred.promise;
                },
我的角度服务如下所示:

 [HttpPost]
        public int ValidateUser([FromBody]dynamic credentials)
        {
            try
            {
                string username = credentials.username;
                string password = credentials.password;
                //do stuff
                }
            }
            catch (Exception ex)
            {
                throw ex;
                return -1;
            }

            return -1; // not valid user
        }
 getAuthorizationStatus: function () {
                    var deferred = $q.defer();
                    $http({
                        method: "POST",
                        url: url,
                        data: {
                            'username': applicationConstants.userName,
                            'password': applicationConstants.userPass
                        },
                        headers: {
                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                    }
                    }).success(deferred.resolve)
                      .error(deferred.reject);
                    return deferred.promise;
                },
我能够访问webApi方法,但无论我如何操作,它都会返回如下错误: {“对象”不包含“用户名”的定义}


知道我做错了什么吗

我不知道ASP.net,但您似乎是通过“x-www-form-urlencoded;”请求发送JSON数据

您应该将“数据:…”更改为“用户名=,密码=”,如果要使用JSON,请使用

'Content-Type': 'application/json'
如果web服务器很好,它应该检测您的内容类型并将其解释为JSON,而不是查找“表单”数据

还考虑使用诸如<强> Curl < /强>(或允许您发送任意HTTP请求的任何WebService)来测试和理解正在发生的事情的工具。