Post Parameter始终为null,c#api controller

时间:2014-06-05 11:33:46

标签: c# asp.net-mvc json

public void PostImport([FromBody]string file)
{}

通过调试我输入了方法并看到该文件始终为null,使用了许多不同的请求,其中一个应该可以工作(还尝试过使用资本a for 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 }
);

3 个答案:

答案 0 :(得分:1)

你能试试吗?

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

使用accept标头代替Content type标头,它应该可以工作。

答案 1 :(得分:0)

您应该发送xhr的标题(" XMLHttpRequest"),然后才能打到您的web-api。 尝试添加以下标题并运行它。

"X-Requested-With": "XMLHttpRequest"

答案 2 :(得分:0)

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

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

您是否尝试过另一个休息客户端来测试您的应用程序(例如Fiddler)?