【问题标题】:AngularJs Posting to a WebApi method with dynamic propertiesAngularJs 发布到具有动态属性的 WebApi 方法
【发布时间】:2015-11-13 06:21:10
【问题描述】:

我的 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
        }

我的 Angular 服务如下所示:

 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 方法,但无论我如何执行此操作,它总是返回如下错误: {"'object' 不包含 'username' 的定义"}

知道我做错了什么吗?

【问题讨论】:

    标签: javascript angularjs asp.net-mvc asp.net-web-api


    【解决方案1】:

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

    您应该将 'data: ...' 更改为 'username=,password=',如果您想使用 JSON,请使用

    'Content-Type': 'application/json'
    

    如果网络服务器不错,它应该检测您的内容类型并将其解释为 JSON,而不是寻找“表单”数据。

    还可以考虑使用 curl(或任何允许您发送任意 HTTP 请求的网络服务)等工具来测试和了解正在发生的事情。

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多