C# &引用;违反协议“;在URI中使用特定语言代码时
我们有一个RESTAPI,它将第三方专有语言代码(采用C# &引用;违反协议“;在URI中使用特定语言代码时,c#,rest,get,dotnet-httpclient,C#,Rest,Get,Dotnet Httpclient,我们有一个RESTAPI,它将第三方专有语言代码(采用en-US格式)映射到我们自己的系统识别的语言代码中。restapi的路由是 ~/v1/languages/mappings/{foreignLanguageCode} [GET] 我们接收这些第三方语言代码,并使用System.Net.Http.HttpClient实例将它们发送到我们自己的API 这对于许多语言代码都非常有效,但是当传递时,请求甚至没有被发送,HttpClient对象抛出异常 发送请求时出错 内部异常-aWebExcep
en-US
格式)映射到我们自己的系统识别的语言代码中。restapi的路由是
~/v1/languages/mappings/{foreignLanguageCode} [GET]
我们接收这些第三方语言代码,并使用System.Net.Http.HttpClient
实例将它们发送到我们自己的API
这对于许多语言代码都非常有效,但是当传递时,请求甚至没有被发送,HttpClient对象抛出异常
发送请求时出错
内部异常-aWebException
-表示
服务器违反了协议。区段=响应STATUSLINE
例外情况还包含
资料来源:“系统”状态:服务器协议冲突
StackTrace:
在System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)中
在System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)上 此时的URI是
https://www.example.com/api/v1/languages/mappings/ko-US/
我已经试过了,有没有尾随斜杠:没有区别。我们可以向同一API发送许多其他语言代码,而不会出现任何问题
有人能解释为什么这个特定的URI会导致这个异常吗?回答我自己的问题
我无法解释原因,但这解决了问题:
myHttpClient.DefaultRequestHeaders.ConnectionClose = true;
我在发送请求之前添加了这一点,因此工作代码如下所示:
httpClient.DefaultRequestHeaders.ConnectionClose = true;
var response = await httpClient.GetAsync(uri).ConfigureAwait(false);
回答我自己的问题
我无法解释原因,但这解决了问题:
myHttpClient.DefaultRequestHeaders.ConnectionClose = true;
我在发送请求之前添加了这一点,因此工作代码如下所示:
httpClient.DefaultRequestHeaders.ConnectionClose = true;
var response = await httpClient.GetAsync(uri).ConfigureAwait(false);
服务器是否崩溃或发出任何诊断?你可能需要嗅探电线以获得足够的线索,这是怎么回事;没有任何线索可供嗅探。>服务器违反了协议。客户端可能在撒谎,因为它确实存在某种内部错误,但知道这一点的唯一方法是调试它。我刚刚与Fiddler进行了检查,没有向预期的URI发送任何请求-不仅是该特定路径,还有服务器。服务器是否崩溃或发出任何诊断?你可能需要嗅探电线以获得足够的线索,这是怎么回事;网络上没有任何东西可以嗅探。>服务器违反了协议。客户端可能是在撒谎,因为它确实存在某种内部错误,但知道这一点的唯一方法是对其进行调试。我刚刚与Fiddler进行了检查,没有向预期的URI发送任何请求-不仅是该特定路径,还有服务器。