c# web api post 请求空

c# web api post request null

使用 c# web api 服务器。

我的客户电话是这样的:

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? '='+JSON.stringify(data) : data),
    dataType: "json",
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});

我的 C# 服务器方法如下所示:

[HttpPost, Route("All/GetMyTeam")]
public POST_GetMyTeam_Response Post(GetMyTeam_Request request)
{
    return new POST_GetMyTeam_Response();
}

现在,每当我使用 'Advanced Rest Client' 时,它是 Google 的 Chrome 插件,我的请求都很好。 但是,如果我发送相同的请求(我在 chrome 的调试 window 中的网络区域中看到),有​​效负载是相同的,请求到达但其中的所有字段都是空的。

public class GetMyTeam_Request
{
    public string UserId;
    public string TeamId;
}

我也尝试从 json 客户端中删除 '=' 但我注意到大多数答案都导致了这个添加(尽管他们从来没有告诉它应该用撇号包裹,但除此之外它不是在职的 )。 试图在 ajax 请求的 headers 或 as-is 字段中添加 contentType-application/json..

TIA。

在您的 ajax 请求中指定

contentType: 'application/json'

而且您不需要在 json 字符串数据

之前附加 "=" 字符串
data: (method === "POST" ? '='+JSON.stringify(data) : data),
                         //^^^^ here

删除 = 标志,它应该可以工作。

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? JSON.stringify(data) : data),
    dataType: "json",
    contentType: 'application/json',
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});