【问题标题】:What does WebException Error: Success mean and How to Troubleshoot?WebException 错误:成功意味着什么以及如何排除故障?
【发布时间】:2021-01-27 04:47:01
【问题描述】:

我在这里完全不知所措。代码本身通常有效。然而,每隔一段时间我就会遇到这个相当神秘的“成功”错误。重新启动似乎有帮助,但现在即使这样似乎也不起作用。我不知道如何获得有关如何解决此问题的更多信息。 Url 始终相同,并且我已验证“BasicCreds”正在返回正确的信息(即与它工作时相同)。任何想法如何进一步排除故障或这个“错误”应该意味着什么?

以防万一:我总是在代理后面并 ping Jazz RTC 服务器。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add("Authorization", BasicCreds());
try
{
    using (WebResponse response = request.GetResponse()) // immediate exception for success (sometimes)
    {

【问题讨论】:

  • 我可以在这里做的第一件事 - 使用 HttpClient 而不是古老的 HttpWebRequest
  • @aepot,等效代码是什么?身份验证失败: HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", BasicCreds()); var 结果 = client.GetAsync(url);
  • 1) var result = await client.GetAsync(url) 或更好的 using(var response = await client.GetAsync(url)) { ... } - 欢迎来到 Asynchronous Programming 2) 猜测 cred 必须另外使用 Base64 编码。 StackOverflow 包含许多HttpClient 的示例,包括身份验证,但它可以特定于您的服务器。
  • 3) BasicCreds() 返回什么? "Basic <creds>"?然后new AuthenticationHeaderValue("Basic", BasicCreds()); 并更改方法以返回不带前缀Basic 的凭据。
  • @aepot,似乎做到了!不知道为什么 HttpWebRequest 如此挑剔,但更新到 HttpClient 似乎有效。至少,现在......谢谢!随意将其作为答案,我会接受。

标签: c# webrequest system.net.webexception


【解决方案1】:

我不知道是什么导致了“成功”错误,但是按照建议,我改用了 HttpClient 并且还没有任何问题。希望它保持这种状态:-)

HttpClient client = new HttpClient();
// Modified BasicCreds() to return encoded "username:password" instead of encoded "Basic username:password"
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", BasicCreds());
try{
     using (HttpResponseMessage response = await client.GetAsync(url))
     {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 2018-09-04
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多