Search code examples
c#.netwindowscredentialswindowsdomainaccount

Domain credentials for a WebClient class don't work


I'm trying to get a HTML source of a website through C# code. When I access the site with Windows Authentication, the following code works:

using (WebClient client = new WebClient())
            {
                client.Credentials = CredentialCache.DefaultCredentials;
                using (Stream stream = client.OpenRead("http://intranet/"))
                using (StreamReader reader = new StreamReader(stream))
                {
                    MessageBox.Show(reader.ReadToEnd());
                }
            }

When I enter my domain credentials manually, I get an "unauthenticated" message.

using (WebClient client = new WebClient())
            {
                NetworkCredential credentials = new NetworkCredential("username", "pass", "domain");
                client.Credentials = credentials;
                using (Stream stream = client.OpenRead("http://intranet/"))
                using (StreamReader reader = new StreamReader(stream))
                {
                    MessageBox.Show(reader.ReadToEnd());
                }
            }

Why is it so?


Solution

  • Try this:

    CredentialCache cc = new CredentialCache();
    cc.Add(
        new Uri("http://intranet/"), 
        "NTLM", 
        new NetworkCredential("username", "pass", "domain"));
    client.Credentials = cc;