C# 调用httpClient.PostAsync返回null

C# 调用httpClient.PostAsync返回null,c#,.net,api,C#,.net,Api,我试图调用一个api,实习生可以调用外部api来获取数据。我写的代码是: [HttpPost] public IHttpActionResult Post() { string _endpoint = "https://someurl.com/api/v1/models?auth_token=mytoken"; var httpContext = (System.Web.HttpContextWrapper)Request.Propert

我试图调用一个api,实习生可以调用外部api来获取数据。我写的代码是:

    [HttpPost]
    public IHttpActionResult Post()
    {

        string _endpoint = "https://someurl.com/api/v1/models?auth_token=mytoken";
        var httpContext = (System.Web.HttpContextWrapper)Request.Properties["MS_HttpContext"];
        string upload_id = httpContext.Request.Form["upload_id"];
        string filename =  httpContext.Request.Form["filename"];
        string filesize = "1000";


        //return this.Ok<string>(upload_id + " " + filename);         


        var content = new FormUrlEncodedContent(new[] 
        {
            new KeyValuePair<string, string>("upload_id", upload_id),
            new KeyValuePair<string, string>("filename", filename),
            new KeyValuePair<string, string>("filesize", filesize)
        });  

        using (var httpClient = new HttpClient())
        {
            var response = httpClient.PostAsync(_endpoint, content).Result;
            return Json(JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result));
        }



    }

但是,它总是返回null。我已经验证了API调用的工作原理,并且一切都是正确的。我对C#有点陌生。

将代码分解,这样您就可以看到从
PostAsync
返回的
Task
对象在说什么

var responseTask = httpClient.PostAsync(_endpoint, content);
var response = responseTask.Result;
// At this point you can query the properties of 'responseTask' to look for exceptions, etc.

请看传入参数“File”的ajax调用,但在C#中,您要查找的是“Filename”

修复了ajax代码:

$.ajax({ url: '/api/tws', 
       type: 'POST', 
       data: { 'filename': "EX-IGES.IGS", 'upload_id': "eb550576d2" }, 
       success: function (response) { console.log('response',response); } 
 });

@JohnSanders
HttpClient
仅为HTTP方法提供
…Async()
方法将代码拆分为显式语句,并使用调试器查看哪个调用没有返回您期望的结果。奇怪。。。应该由于超时而失败(您使用
.Result
锁定了请求线程)。请使用Fiddler检查服务器实际返回的内容。请尝试在此行添加断点:var response=httpClient.PostAsync(_endpoint,content).Result;之后,在即时窗口中键入:httpClient.PostAsync(_endpoint,content)只需将该函数复制到表单中并使用该函数进行调试..谢谢。。事实上,我是用小提琴手发现的。我输入了错误的字段标签。噢!我们都忽略了这个简单的可能性是的。。你觉得我感觉如何。。。我整天都在看这个。我是PHP和Javascript的大师,所以我认为是我对C语言的陌生阻碍了事情的发展。我只是在等着看是否有人给出一个答案,指出“文件”或“文件名”的区别。如果没有,我会将这个标记为正确的
$.ajax({ url: '/api/tws', 
       type: 'POST', 
       data: { 'filename': "EX-IGES.IGS", 'upload_id': "eb550576d2" }, 
       success: function (response) { console.log('response',response); } 
 });