繁体   English   中英

Post Rest Web API在Postman上工作,但未从C#项目中的代码返回任何响应

[英]Post rest web api working from Postman but not returning any response from code in C# project

有一个POST rest api,以前可以从代码开始工作。 但最近它已损坏,没有返回任何响应。 但是,如果我尝试从Postman调用api,则可以正常工作。

我可以通过什么方式调试它以找到问题的根本原因?

以下是我用来调用此帖子休息api的C#代码

 public async Task SaveToServerAsync()
    {
        string filePath = @"<filePath>";
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
        // tried this line of code from another SO answer, but this didn't work either   
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://<server name>/");
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "d2ebf9aefbaa416adcd0");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Add("Accept", "*/*");
            client.DefaultRequestHeaders.Add("Connection", "keep-alive");

            using (var fileStream = new FileStream(filePath, FileMode.Open))
            {
                var content = new MultipartFormDataContent();
                content.Add(new StreamContent(fileStream), "file", filePath);
                content.Add(new StringContent("e8d002f9-f381-44c2-bce0-13416929f14d"), "Id");

                try
                {
                    var response = await client.PostAsync("<rest api end point>", content).ConfigureAwait(false);

                    if (response.IsSuccessStatusCode)
                    {
                        Debug.Write("Response received");
                    }
                }
                catch (Exception ex)
                {
                    Debug.Write("Exception occured");
                    Debug.Write(ex.Message);
                }
                finally
                {
                }
            }
        }
    }

它总是转到带有异常的异常块,因为“任务已取消”

不知道从邮递员那里无论如何都能调试它。

因此,问题与ExpectContinue标头有关,该标头默认情况下为true。 服务器以某种方式无法正确处理它,并且客户端在不确定的时间内等待继续(100)消息。

暂时手动将此标头设置为false可以为我们工作:

httpClient.DefaultRequestHeaders.ExpectContinue = false;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM