使用WebClient进行下载 - IIS基本身份验证

4

我正在使用这个方法从一个发布在IIS上的网站下载HTML内容:

using (var client = new WebClient())
{
   client.Credentials =  CredentialCache.DefaultCredentials;
   string html = client.DownloadString("http://site.com");
}

但是当IIS设置为基本身份验证时,这种方法不起作用。用户已经在IIS对话框中输入了用户名和密码。

有没有办法让这个方法在不再传递用户名和密码的情况下工作?

3个回答

4
我怀疑基本身份验证需要密码,所以我认为您需要一个 new System.Net.NetworkCredential("your-username","your-password")。默认凭据可用于综合身份验证,但不适用于基本身份验证(据我所知)。因此,回答问题:

有没有一种方法可以在不再传递用户名和密码的情况下使其工作?

不,我不认为有。


0

继续搜索后,我找到了这个:

HttpApplication context = (HttpApplication)HttpContext.Current.ApplicationInstance;
            string authHeader = context.Request.Headers["Authorization"];
            string userNameAndPassword = Encoding.Default.GetString(
                       Convert.FromBase64String(authHeader.Substring(6)));
            string[] parts = userNameAndPassword.Split(':');

            Response.Write(userNameAndPassword);

当IIS设置为基本身份验证时,我们可以获取用户和密码!


0
我使用以下代码进行默认凭据的 NTLM 认证。
webClient.Proxy = WebRequest.GetSystemWebProxy();

webClient.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;

有一天我研究了这个问题并找到了可行的解决方案。但是,使用 .Net 4.0 后,我的 Visual Studio 显示 GetSystemWebProxy 目前已被弃用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接