C# API以null形式传入

C# API以null形式传入,c#,api,C#,Api,我有一个已知的工作API。当我使用下面的代码调用它时,它作为空值传入 代码: 我对api的调用有问题吗?下面是课堂: [System.Serializable] public class WBG_Serial_Key { public string Email { get; set; } public string Product { get; set; } public string Serial_Key { get; set; } } 我做错什么了吗?有人有什么建议

我有一个已知的工作API。当我使用下面的代码调用它时,它作为空值传入

代码:

我对api的调用有问题吗?下面是课堂:

[System.Serializable]
public class WBG_Serial_Key
{
    public string Email { get; set; }
    public string Product { get; set; }
    public string Serial_Key { get; set; }
}
我做错什么了吗?有人有什么建议吗

更新: 我按照建议调整了代码,但仍然不起作用:

public bool Serial_Key_Exist(string serial)
    {
        bool rsp = false;
        WBG_Serial_Key Serial_Key = new WBG_Serial_Key();
        Serial_Key.Email = "";
        Serial_Key.Product = _Product;
        Serial_Key.Serial_Key = serial;

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(_EndPoint);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = client.PostAsJsonAsync("api/WhiteBoXGaming/Post_SerialKeyExist", rsp).Result;

            if(response.IsSuccessStatusCode)
            {
                return response.Content.ReadAsAsync<bool>().Result;
            }

            //default failed - Prevent duplicate keys 
            return true;
        }

    }
更新:
现在我有一个新的问题,它一直死锁现在。是否仍要在不使用async的情况下获取返回结果

我成功了,谢谢大家的帮助和建议

public bool Serial_Key_Exist(string serial)
    {
        bool rsp = false;
        WBG_Serial_Key Serial_Key = new WBG_Serial_Key();
        Serial_Key.Email = "";
        Serial_Key.Product = _Product;
        Serial_Key.Serial_Key = serial;

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(_EndPoint);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = client.PostAsJsonAsync("api/WhiteBoXGaming/Post_SerialKeyExist", Serial_Key).Result;

            if(response.IsSuccessStatusCode)
            {
                return response.Content.ReadAsAsync<bool>().Result;
            }

            //default failed - Prevent duplicate keys 
            return true;
        }

    }
public bool Serial\u Key\u存在(字符串序列)
{
bool-rsp=false;
WBG_串行_键串行_键=新的WBG_串行_键();
Serial_Key.Email=“”;
Serial_Key.Product=_Product;
串行按键。串行按键=串行;
使用(var client=new HttpClient())
{
client.BaseAddress=新Uri(_端点);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
HttpResponseMessage response=client.postsJSONASync(“api/WhiteBoXGaming/Post_SerialKeyExist”,Serial_Key”)。结果;
if(响应。IsSuccessStatusCode)
{
返回response.Content.ReadAsAsync().Result;
}
//默认失败-防止重复密钥
返回true;
}
}

也许您的API代码是错误的?我看到很多人试图用类似
ApiMethod(string myJsonBody)
的东西来接受JSON服务器端,当然,这不起作用,然后他们想知道为什么会得到
null
,使用
HttpClient
而不是headwell发布一个示例代码,如果您认为您的想法可行,那么它不是服务器端问题?有趣。我推荐阅读和后续活动。本文将介绍为什么您不应该像现在这样将
HttpClient
一起使用
使用
,Microsoft打算如何使其在整个应用程序中保持静态,以及如何……这会导致DNS在较长生命周期的应用程序中无法保持最新。微软已经为它创建了一个解决方案,这将在后续文章中介绍。
 [Route("api/WhiteBoXGaming/Post_SerialKeyExist")]
    [HttpPost]
    public bool SerialKeyExist([FromBody]WBG_Serial_Key Key)
    {
        bool Exist = false;

        Exist = _DataHelper.Serial_Key_Exist(Key.Serial_Key, Key.Product);

        return Exist;
    }
public bool Serial_Key_Exist(string serial)
    {
        bool rsp = false;
        WBG_Serial_Key Serial_Key = new WBG_Serial_Key();
        Serial_Key.Email = "";
        Serial_Key.Product = _Product;
        Serial_Key.Serial_Key = serial;

        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri(_EndPoint);
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = client.PostAsJsonAsync("api/WhiteBoXGaming/Post_SerialKeyExist", Serial_Key).Result;

            if(response.IsSuccessStatusCode)
            {
                return response.Content.ReadAsAsync<bool>().Result;
            }

            //default failed - Prevent duplicate keys 
            return true;
        }

    }