回答
我解決它通過使用ASHX(作爲代理),並使得從該服務頁面的請求與自定義UserAgent的標題,然後打印我從其他網站得到的答案。
string userAgent = "stuff";
PropertyInfo pUserAgent = HttpContext.Current.Request.GetType().GetProperty("UserAgent");
pUserAgent.SetValue(HttpContext.Current.Request, userAgent, null);
對不起,擡頭錯誤的類。除非修改其後的專用字段,否則無法設置該屬性。 HttpRequest.UserAgent
不允許設置者訪問。
-1這是一個獲得唯一的財產 – 2010-06-17 20:55:38
固定它,擡起頭來錯誤的類 – Femaref 2010-06-17 20:57:18
甚至有它背後沒有私人領域,你可以像使用反射的工具來獲得一些啓發該屬性背後的代碼... – 2010-06-17 21:00:52
你必須使用HttpWebRequest
不能修改傳入的請求的用戶代理。這是用戶瀏覽器發送的值,所以我不確定爲什麼你想改變它。如果您使用HttpWebRequest類自己創建出站請求,則可以設置它的.UserAgent屬性,或者如果您正在使用WebClient類,則可以添加到.Headers集合。
HttpContext.Current.Request
爲只讀也是如此HttpContext.Current.Request.UserAgent
。 Web的本質是如此,沒有理由爲什麼你可能想要改變HttpRequest對象中的任何東西,因爲這是由一些你可能永遠不能控制的HttpClient發送的。即使在你可以改變它的情況下,你的失去了原來的請求的完整性,這顯然是不建議。我不知道你想通過改變Request對象或它的屬性來達到什麼目的,但我肯定知道這不是要走的路。嘗試改變其他方式而不是改變Request對象,或者在這裏寫下你的實際問題陳述,我們會盡力幫助你。
對於任何嘗試這樣做的人(是的,你可以有一個理由),你的選擇似乎非常有限。 'Request.UserAgent'是隻讀的。更改底層頭文件Request.Headers [「User-Agent」](它也失去了原始的完整性,但是*被允許)不改變最終的Request.UserAgent值。我很想聽到比創建允許設置UserAgent的HttpRequest的子類更好的方法。這樣做需要將所有數據鏡像到新的類實例或創建引用原始實例數據的重載。 – patridge 2015-07-20 19:32:57
我的問題是,頁面Nav_Side.aspx使用,除非瀏覽器使得在兼容模式下要求其拋出一個500錯誤一些古老的UI組件。
我想成爲能夠在一個頁面逐頁的基礎上控制兼容模式,因此使用利用一個ASHX以接收初始請求,修改它並轉移到ASPX的Andreas想法。
創建Visual Studio中的ashx後,用自己的代碼替換ProcessRequest方法,在我的情況:
public void ProcessRequest(HttpContext context){
var headers = context.Request.Headers;
//set a User-Agent header that mimics compatibility mode for Nav_Side.aspx
headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 7.0)";
context.Server.TransferRequest("Nav_Side.aspx", true, context.Request.HttpMethod, headers);
}
- 1. 在.net dll中更改代碼
- 2. 更改NSURLConnection的userAgent
- 3. 更改代碼以.NET 2.0
- 4. 更改遠程密碼(在代碼中,.Net 3.5)
- 5. .Net 4.0和.Net 2.0中的異常代碼更改
- 6. 在.NET中更改pfx密碼
- 7. 在C++代碼中更改.NET 4運行時激活策略
- 8. 從.net代碼更改音量
- 9. 使用.NET中的代碼更改桌面壁紙
- 10. 使用TFS檢測.NET代碼中的重大更改?
- 11. 在android中更改表格代碼...
- 12. Subclipse - 在NetBeans中標記代碼更改
- 13. 在VS 2010中註釋代碼而不更改代碼
- 14. .NET如何在代碼後面更改控件的位置?
- 15. 如何在以下代碼中更改顏色更改
- 16. 在Eclipse中更改min SDK版本時更改android.jar源代碼?
- 17. 更改MediaElement中的源代碼(SILVERLIGHT)
- 18. 更改代碼中的ELMAH數據庫
- 19. 無法更改CSS中的代碼
- 20. 更改javax.servlet.http.HttpServlet中的響應代碼
- 21. liquibase中的Java代碼更改集
- 22. 更改代碼中的HTML表格
- 23. Wicket中的代碼更改重裝
- 24. 更改Android中的MediaRecorder源代碼
- 25. 更改代碼中的主要活動
- 26. Spec2006源代碼中的更改
- 27. 更改R包中的C源代碼
- 28. 更改代碼中的reportviewer值
- 29. 更改代碼中的桌面圖標
- 30. .NET中的代碼安全
你需要在這個單元測試的時間?在這種情況下,您可以存根沃勒HttpContext.Current – 2010-06-17 20:53:36