2011-06-09 53 views
7

我在我的asp.net應用程序中使用WebBrowser控件來生成網頁截圖。我能夠生成圖像,直到我更改了應用程序池帳戶。我給了新的應用程序池所有必要的權利,並且我可以從IE瀏覽我的頁面。但是當我通過Web瀏覽器控件以編程方式導航時,我得到了401.2。我在IIS 7.0中設置了「失敗的請求跟蹤規則」,並使用Fiddler來嗅探請求,並發現身份驗證頭不正確。爲WebBrowser控件設置身份驗證標頭 - ASP.NET

但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嗎?

回答

4

如果您想在標題中的用戶代理,你應該做這樣的事情:

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

只要記住,每頭必須以一個回車換行對被終止。

+0

這只是一個預感。我是否可以獲得401生成,因爲我沒有指定用戶代理?什麼是在http頭中必須的東西? – NLV 2011-06-09 13:51:30

+0

@NLV:我不確定你的案件需要什麼。你說從IE導航工程?檢查由IE製作的請求中的標題。 – 2011-06-09 14:02:30

+0

我在Windows窗體應用程序中嘗試了相同的代碼。即使我明確地將認證頭設置爲空,並請求頁面,我可以在控件中加載頁面。並且該Web應用程序未配置爲匿名訪問。你能解釋一下嗎?我開始思考,無論我設置的請求是否有效,它都沒有響應。 – NLV 2011-06-10 10:26:10