System.Net.WebClient fails weirdly

前端 未结 4 882
梦谈多话
梦谈多话 2021-02-19 18:29

I am trying to download some data from the reporting services instance on our TFS server.
Given that the code should run on a computer that is not domain-joined, I figured t

相关标签:
4条回答
  • 2021-02-19 18:49

    I was able to get around this error by using a CredentialCache object, as follows:

    WebClient wc = new WebClient();
    CredentialCache credCache = new CredentialCache();
    credCache.Add(new Uri("http://mydomain.com/"), "Basic",
    new NetworkCredential("username", "password"));
    
    wc.Credentials = credCache;
    
    wc.DownloadString(queryString));
    
    0 讨论(0)
  • 2021-02-19 18:54

    Take a look at this link:
    HTTP Authorization and .NET WebRequest, WebClient Classes

    I had the same problem as you. I have only added one line and it started to work. Try this

    private void ThisDoesntWork()
        {
            WebClient wc = new WebClient();
            wc.Credentials = new NetworkCredential("username", "password", "domain");
            //After adding the headers it started to work !
            wc.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
            wc.DownloadString("http://teamfoundationserver/reports/........");  //blows up wih HTTP 401
        }
    
    0 讨论(0)
  • 2021-02-19 19:06

    Try this ...

    var credCache = new CredentialCache();
    credCache.Add(new Uri("http://teamfoundationserver/reports/........""),
                          "Basic", 
                          new NetworkCredential("username", "password", "DOMAIN"));
    wc.Credentials = credCache;
    

    If that does not work, try replacing "Basic" with "Negotiate".

    0 讨论(0)
  • 2021-02-19 19:08

    What happens when you use this?

    wc.Credentials = CredentialCache.DefaultCredentials;
    

    Also, are you sure you have the correct username, password and domain?

    Also: I wonder if Fiddler is changing around some unicode characters when .net breaks them or something like that. If your user/pass/domain has unicode, try escaping it out like "\u2638" instead of "☺".

    0 讨论(0)
提交回复
热议问题