【问题标题】:Post Parameter is always null, c# api controllerPost Parameter 始终为空,c# api 控制器
【发布时间】:2014-07-05 22:11:46
【问题描述】:
public void PostImport([FromBody]string file)
{}

通过调试,我输入了方法,发现文件始终为空,使用了许多不同的请求,其中一个应该可以工作(也尝试过使用大写的 a 来表示 Application/json)? :

C:\>curl -X POST -H "Content-Type: application/json" -d "{\"\":\"myStr\"}" http://localhost:61393/api/admin/import

C:\>curl -X POST -H "Content-Type: application/json" -d "{\"file\":\"myStr\"}" http://localhost:61393/api/admin/import

我的路线设置如下

config.Routes.MapHttpRoute(
  name: "DefaultApi",
  routeTemplate: "api/{controller}/{id}",
  defaults: new { id = RouteParameter.Optional }
);

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

【问题讨论】:

标签: c# asp.net-mvc json


【解决方案1】:

你可以试试这个吗?

curl -i -H "Accept: application/json" -X POST -d "=myStr" http://localhost:61393/api/admin/import

使用接受标头代替内容类型标头,它应该可以工作。

【讨论】:

  • 谢谢。我觉得这很奇怪,为什么 m$ 不支持有效的 json ?
【解决方案2】:

您应该发送 xhr 的标头(“XMLHttpRequest”),只有这样您才能访问您的 web-api。 尝试添加下面的标题并运行它。

"X-Requested-With": "XMLHttpRequest"

【讨论】:

  • 我不确定这是对问题的回答。 @NimChimpsky 说他可以在 PostImport 中停止调试器,因此请求肯定会到达应用程序。
  • @Kirill,我同意你的看法。我认为在 web-api 中只有当它是 XHR 请求时才可能限制填充参数。
【解决方案3】:

确保您的 curl 语法正确。这是 curl manual 的语法:

curl -d "name=Rafael%20Sagula&phone=3320780" \ 
            http://www.where.com/guest.cgi

您是否尝试过其他 REST 客户端来测试您的应用程序(例如 Fiddler)?

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2017-08-28
    • 2019-03-06
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多