C# 使用AngularJS$http(ionic framework)将数据发布到ASP.NET MVC应用程序

C# 使用AngularJS$http(ionic framework)将数据发布到ASP.NET MVC应用程序,c#,asp.net,angularjs,asp.net-mvc,ionic-framework,C#,Asp.net,Angularjs,Asp.net Mvc,Ionic Framework,我正在编写一个使用AngularJS的Ionic应用程序,并试图向我的ASP.NET MVC应用程序发送帖子 关于我的客户,我有: function testPost(url, token) { var deferred = $q.defer(); var params = {'token': token }; $http({ method: 'POST', url: url, data: params, headers: { 'Content-Ty

我正在编写一个使用AngularJS的Ionic应用程序,并试图向我的ASP.NET MVC应用程序发送帖子

关于我的客户,我有:

function testPost(url, token) {
  var deferred = $q.defer();
  var params = {'token': token };

  $http({
    method: 'POST',
    url: url,
    data: params,
    headers: { 'Content-Type': 'application/json' }
  })
    .success(function (data, status, headers, config) {
        deferred.resolve(data);
    }).error(function(data, status, headers, config) {
        deferred.reject(data);
    });

  return deferred.promise;
}
在我的服务器上,我有:

protected override void OnActionExecuting(ActionExecutingContext ctx)
{
    base.OnActionExecuting(ctx);
    string token = (string)Request.Form["token"]; 
}

但在调试我的服务器代码时,
Request.Form
没有任何元素。我可以在Postman中创建一个POST,将
token
设置为主体中针对相同操作的值,并查看
请求。form
具有
token
的值。我尝试过使用
标题:{'Content Type':'x-www-form-urlencoded'}
并尝试过使用
数据:JSON.stringify(params)
。我不确定谁在这里犯错,我的客户端实现还是服务器实现。非常感谢您的帮助。

您发布的数据不是表单数据。它是json请求体。您无法从Request.Form获取此数据。您必须更改客户端代码以发送表单字段,或者将服务器代码更改为接受json数据作为模型的方法

public ActionResult Post(ModelOfData data){//do something with data.}
它与postman一起工作的原因是您使用的是内容类型:表单数据
但是在javascript中,您发送的json请求无效,您发布的数据不是表单数据。它是json请求体。您无法从Request.Form获取此数据。您必须更改客户端代码以发送表单字段,或者将服务器代码更改为接受json数据作为模型的方法

public ActionResult Post(ModelOfData data){//do something with data.}
它与postman一起工作的原因是您使用的是内容类型:表单数据
但是在javascript中,您发送的是json请求,这是行不通的

感谢您的澄清。因为这是一个将被发送到许多操作的参数,我想在
OnActionExecuting()
中读取它,所以我现在只看
HttpContext.Request.InputStream
而不是
Request.Form
看起来您正在尝试使用此令牌进行身份验证。如果您是,那么您应该使用自定义授权过滤器来进行此澄清。因为这是一个将被发送到许多操作的参数,我想在
OnActionExecuting()
中读取它,所以我现在只看
HttpContext.Request.InputStream
而不是
Request.Form
看起来您正在尝试使用此令牌进行身份验证。如果是,则应使用自定义授权筛选器