25
Estoy tratando de obtener una fuente html de un sitio web a través del código C#. Cuando accedo al sitio con la autenticación de Windows el siguiente código funciona:Las credenciales de dominio para una clase de WebClient no funcionan
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());
}
}
cuando entro en mis credenciales de dominio manualmente me sale un mensaje de "no autenticado":
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());
}
}
¿Por qué es así?
obras, gracias, ninguna explicación? – agnieszka
Debe especificar el tipo de autenticación. Cuando el servidor desafía al cliente con la autenticación NTLM, se llamará al método ICredentials.GetCredential en WebClient.Credentials con 'authType =" NTLM "'. Si usó 'WebClient.Credential = new NetworkCredential (...)' ya que no se especifica ningún tipo de autenticación, el cliente no podrá responder correctamente. 'CredentialCache' ya implementa esta funcionalidad. –
¿Qué debo especificar en Uri? El recurso que trato de obtener es "https://myDomain.com/images/userName". ¿Puedes poner algún ejemplo en vivo sobre cómo deben verse Uri y NetworkCredentials? Thx –