1

从 Box 服务器下载时收到以下错误:

    InnerException  {System.ArgumentException: [net_WebHeaderInvalidControlChars]
Arguments: 
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=4.7.60408.0&File=System.Net.dll&Key=net_WebHeaderInvalidControlChars
Parameter name: name
   at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)}  System.Exception {System.ArgumentException}

下面显示的是代码片段。

using (HttpClient client = new HttpClient(handler) { MaxResponseContentBufferSize = Int32.MaxValue })
{
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

    try
    {
        var fileResponse = await client.GetAsync(requestUrl, HttpCompletionOption.ResponseHeadersRead);                    

        if (fileResponse != null && fileResponse.StatusCode == System.Net.HttpStatusCode.OK)
            return await fileResponse.Content.ReadAsByteArrayAsync();
        else return null;
    }
    catch(Exception e)
    {
        System.Diagnostics.Debug.WriteLine("Error in getAsync, " + e.StackTrace);                    
        return null;
    }

}

请注意,这只发生在具有韩文(非英文)文件名和损坏文件的文件中。对于图像文件和未损坏的文件,我能够成功下载。(损坏文件的示例是打开时显示错误消息的 word 或 ppt 文件)。

4

1 回答 1

0

在 windows phone 8 中遇到同样的问题。我尝试了 HttpResponseMessage response = await httpClient.SendAsync(requestMessage);

我试过 WebClient client = new WebClient(); client.OpenReadAsync(new Uri(url,UriKind.RelativeOrAbsolute));

我尝试了来自 RestClient 的 IRestResponse

所有这些都导致空值异常和内部异常net_WebHeaderInvalidControlChars

问题是从 Windows 客户端传递的用户代理未被服务器端识别。结果,返回的响应标头中的一个导致 .Net 在较低级别崩溃并且无法处理响应。

添加NativeHost作为识别的 UserAgent 修复了异常

于 2017-01-17T09:18:33.923 回答