收到 HttpResponseMessage OK 时出错

Error receiving a HttpResponseMessage OK

我遇到了问题。我有 2 个 WebApi。 webapi2 从 DB 和 return IMAGE 获取数据。在这里,它可以正常工作。如果我尝试在浏览器上显示图像,或者如果我更改了字节数组。 问题在于调用此 webapi2 的 Webapi1。我总是收到 IsSuccessStatusCode 为 false 的 HttpResponseMessage。错误是 500 内部服务器错误。 我是新手,我不知道该怎么做...我已经尝试了很多东西

public async Task<HttpResponseMessage> GetFoto(string exemplo, string exemple2)
        {
            HttpClientHandler handler = new HttpClientHandler()
            {
                UseDefaultCredentials = true,
            };
        using (var client = new HttpClient(handler))
        {

            client.BaseAddress = new Uri("http://192.111.56.1:1762/");

            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.GetAsync("api/Tr/Test?exemplo="+exemplo+"&pk="+pk+"");

            if (response.IsSuccessStatusCode)
            {
                var data = response.Content.ReadAsByteArrayAsync().Result;
                var stream = new MemoryStream(data);
                response.Content = new StreamContent(stream);
                response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");

                return response;
            }
            else
            {

                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
                return null;
            }


        }
    }

我的 webapi 可以工作 return 我的图片:

  //connections code that doesn´t matter....

            try
            {

                HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
                var stream = new MemoryStream(imgBytes);
                result.Content = new StreamContent(stream);
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");

                return result;

            }

            catch (Exception ex)
            {
                return Request.CreateResponse(HttpStatusCode.Gone);
            }

错误是因为当您在浏览器上传递一个值时,它们会更改一些字符...所以,您传递了 2 个值...您必须使用

在 webapi 1 上

var MIRACLE =  Uri.EscapeDataString(exemplo);

并且在 webapi2

var MIRACLE2 = Uri.UnescapeDataString(MIRACLE)

根据您的代码,网络 api 1 将仅接受媒体类型 = "application/json"。 这是因为您添加了以下代码:

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

因此,要么删除代码行,要么将其从 "application/json" 更改为 "image/jpeg"。