从 ASP Web Api IHttpActionResult 反序列化 byte[]

ojh*_*ins 3 c# asp.net deserialization asp.net-web-api

我正在尝试找出正确且最佳的方法来反序列化来自返回 byte[] 的 Asp.Net Web Api 方法的响应。

Web Api 方法如下所示

public IHttpActionResult Get()
{
    byte[] content = GetContent();
    return Ok(content);
}
Run Code Online (Sandbox Code Playgroud)

我正在呼叫端点

string content;
using (var client =  new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

    HttpResponseMessage response = await client.GetAsync("api/v1/thecorrectpath");
    if (response.IsSuccessStatusCode)
    {
        content = await response.Content.ReadAsStringAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将响应读入content其中时,格式如下

<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">SfSEjEyNzE9MNgMCD2a8i0xLjcNJeLjzC...R4Cg==</base64Binary>
Run Code Online (Sandbox Code Playgroud)

将此响应转换为 的最佳实践方法是byte[]什么?

Van*_*dze 5

我会为此使用json.net

网络API:

public string Get()
{
    byte[] content = GetContent();
    var data = JsonConvert.SerializeObject(content);
    return data;
}
Run Code Online (Sandbox Code Playgroud)

客户:

private static async Task GetData()
{
    string content;
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://localhost:23306/");
        client.DefaultRequestHeaders.Accept.Clear();

        HttpResponseMessage response = await client.GetAsync("home/get");
        if (response.IsSuccessStatusCode)
        {
            content = await response.Content.ReadAsStringAsync();
            var data = JsonConvert.DeserializeObject<byte[]>(content);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)