C# 设置WebBrowser控件的身份验证标头-ASP.NET

C# 设置WebBrowser控件的身份验证标头-ASP.NET,c#,asp.net,webbrowser-control,http-status-code-401,C#,Asp.net,Webbrowser Control,Http Status Code 401,我正在asp.net应用程序中使用WebBrowser控件生成网页的屏幕截图。我能够生成图像,直到我更改了应用程序池帐户。我已经给了新的应用程序池所有必要的权限,并且我能够从IE浏览我的页面。但是当我通过web浏览器控件以编程方式导航到它时,我得到了401.2。我在IIS 7.0中设置了“失败的请求跟踪规则”,并使用Fiddler嗅探请求,发现身份验证标头不正确 但是webbrowser.navigate有一个重载方法,我们可以在其中传递自定义http头。我如何设置它?我只想使用集成身份验证,不

我正在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)设置标题吗?

如果您想在标题中包含用户代理,您可能应该执行以下操作:

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

请记住,每个标头都必须使用回车换行符对终止。

这只是一种预感。由于没有指定用户代理,是否可以生成401?http头中必须包含哪些内容?@NLV:我不确定您的情况需要什么。你说IE的导航有用吗?检查IE请求中的标题。我在windows窗体应用程序中尝试了相同的代码。即使我显式地将身份验证头设置为空并请求页面,我也能够将页面加载到控件中。并且该web应用未配置为匿名访问。你能解释一下吗?我开始认为,无论我对请求设置了什么有效的auth头,它都没有响应。