2017-09-06 69 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'。 - 我刪除了它,並獲得了數據。

相關問題