为WebBrowser控件设置身份验证标头 - ASP.NET

时间:2011-06-09 13:30:42

标签: c# asp.net webbrowser-control http-status-code-401

我在我的asp.net应用程序中使用WebBrowser控件来生成网页的屏幕截图。在更改应用程序池帐户之前,我能够生成图像。我给了新应用程序池所有必要的权限,我可以从IE浏览我的页面。但是当我以编程方式通过Web浏览器控件导航到它时,我得到的是401.2。我在IIS 7.0中设置了“失败的请求跟踪规则”,并使用Fiddler来嗅探请求,我发现身份验证标头不正确。

但是webbrowser.navigate有一个重载方法,我们可以传递自定义的http标头。我怎么设置它?我只是想使用集成身份验证,并且不想在代码中提供用户名/密码,因为我可能不知道它。但是我仍然试着以下代码而没有运气。

System.Uri uri = new Uri(myUrl);
byte[] authData = System.Text.UnicodeEncoding.UTF8.GetBytes("user: passwd");
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + "\r\n";
myBrowser.Navigate(uri, "", null, authHeader);

任何想法如何设置标题与其他细节,如useragent?

1 个答案:

答案 0 :(得分:4)

如果要在标头中包含用户代理,则应该执行以下操作:

string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + 
        "\r\n" + "User-Agent: MyUserAgent\r\n";

请记住,每个标题必须以回车换行符对终止。