2017-09-06 71 views
0

我正在努力让自我托管的asp.net web api服务器获得调用以在控制器上发布。如何发布到asp.net核心web api控制器并获取参数值

$.ajax({ 
    url: mySelfHostedAspWebApi, //i.e. http://1.2.3.4:1234/ 
    type: "POST", 
    data: cmd, 
    contentType: 'application/json', 
    success: (function(scanCmd) { 

    }), //success: (function (scanCmd){ 
});// $.ajax({ 

而C#中的asp.net核心控制器非常直。

... 
    [Route("")] 
    [HttpPost] 
    public HttpResponseMessage Post(Command cmd) 
    { 
    ASSERT(null,cmd); // <=== problem here !!! 
    if(cmd=="go") Go(";-)"); 
    ... 

在我的老项目之一,我遇到了类似的问题......而且修复了打开系统上的一些文件,即控制如果职位是为菱和myselfhostedapp写POST在控制访问我的应用程序的线上。 (我不记得是哪个文件是...)

  • 如果这听起来很熟悉,请添加一个提示.. 感谢
+0

只是检查,你为什么不用'FromBody'属性来声明'cmd'参数是这样的:'public HttpResponseMessage Post([FromBody] Command cmd)'? –

+0

可能的重复https://stackoverflow.com/questions/45862459/asp-net-core-2-api-post-objects-are-null/45862556。 –

+1

我进一步调试了一下,发现问题是由ajax调用中的contentType:'application/json'造成的。 – kfn

回答

1

我想你缺少FromBody参数声明为您cmd参数是这样的:

[Route("")] 
[HttpPost] 
public HttpResponseMessage Post([FromBody] Command cmd) // <<- tweak here 
{ 
    ASSERT(null,cmd); // <=== no problem here :-) 
    if(cmd=="go") Go(";-)"); 
    ... 
0

问题是在ajax调用中使用contentType:'application/json'。 - 我删除了它,并获得了数据。

相关问题