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

发布于 2024-11-14 16:39:46 字数 641 浏览 4 评论 0原文

我在我的 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)的标头吗?

I'm using WebBrowser control in my asp.net application to generate screenshots of web pages. I was able to generate images till I changed the application pool account. I've given the new application pool all the necessary rights and I'm able to browse my pages from IE. But when I navigate to it through the web browser control programatically I'm getting 401.2. I've setup "Failed request tracing rules" in my IIS 7.0 and have used Fiddler to sniff the requests and I've found that the authentication header is not right.

But the webbrowser.navigate has an overloaded method where we can pass custom http headers. How can I set it? I just want to use the integrated authentication and don't want to give the username/password in the code because I might not know it. But still I tried the following code with no luck.

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);

Any ideas how to set the header with other details such as useragent too?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲鸠 2024-11-21 16:39:46

如果您想在标头中包含用户代理,您可能应该这样做:

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

只需记住每个标头必须以回车换行符对终止。

If you want to include the user agent in the header, you should probably do something like this:

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

Just remember that each header must be terminated with a carriage return linefeed pair.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文