我有一个经过Windows身份验证的网页,我想在用户请求此页面时将此页面的HTML副本下载到我的服务器。我尝试过这样的事情
using (WebClient client = new WebClient())
{
string htmlCode = client.DownloadString("http://aksphases:200/lynliste.aspx");
}
由于我传递给系统的URL创建了新会话,因此无法给出正确的结果。在这种情况下,我需要对此Web请求进行身份验证,这是我无法做到的。只有这样才能对此网页进行身份验证是用户手动登录(我知道通过代码验证请求的方法,但由于某些特殊原因我不能在这里尝试)。有没有其他方法可以下载当前页面的HTML,该HTML在浏览器中运行而无需验证URL。
答案 0 :(得分:3)
您可以将当前表单身份验证Cookie与请求一起发送:
using (WebClient client = new WebClient())
{
client.Headers[HttpRequestHeader.Cookie] =
System.Web.HttpContext.Current.Request.Headers["Cookie"];
string htmlCode = client.DownloadString("http://aksphases:200/lynliste.aspx");
}
这样我们基本上将当前的HTTP请求cookie转移到远程HTTP调用。
答案 1 :(得分:0)
如果Web服务器不允许匿名访问,则无法解决 - 您必须使用该网站对自己进行身份验证。
然而,与您认为必须手动完成登录操作相反,它也可以通过代码完成。在Windows身份验证的情况下,通过Credentials属性传递凭据。对于Forms身份验证,您需要将登录凭据POST到登录页面,然后在后续请求中使用来自响应的身份验证cookie(使用工具如fiddler来检查来自浏览器的请求/响应以在您的代码中复制相同的内容)。