2012-09-14 35 views
2

我有一個攔截POST請求的網頁,將用戶名從請求中拉出來,並根據用戶名進行請求轉發。現在,我注意到傳入的HttpRequest有一個Params屬性,並且HttpWebRequest沒有。爲什麼是這樣?有沒有一種方法可以捕獲我傳出的HttpWebRequest中的Params數據?HttpRequest vs HttpWebRequest

謝謝。

回答

4

他們是兩種不同的封裝根本就是兩個不同的.NET類:

 System.Object 
     System.MarshalByRefObject 
     System.Net.WebRequest 
      System.Net.HttpWebRequest 
 System.Object 
     System.Web.HttpRequest 

HttpWebRequest的是一個古老的.Net 1.1的東西 - 我肯定會使用Web.HttpRequest如果你在重構任何代碼計劃

恕我直言...

+1

感謝您的回覆。這是我的理解,HttpRequest是一個基本上代表傳入請求的服務器類。如果要轉發請求,則必須使用.Net HttpWebRequest重新創建請求。這是不正確的?如果我可以創建另一個HttpRequest,那就太棒了。 – user1373121

+1

我不太確定HttpWebRequest「是一個老東西」(就像等待被棄用)。以新的異步編程模型爲例,使用「異步」關鍵字並返回Task <>(使用.NET 4.5新增)。 HttpWebRequest已經提供了一個異步讀取。 http://msdn.microsoft.com/en-us/library/system.net.webrequest.getresponseasync.aspx –

1

對於初學者來說,他們(或編寫任何新的代碼!)在不同的命名空間中完全不同的類。也就是說,

Params是一個包裝器,它公開查詢字符串參數以及POST數據。當你構建一個請求時,你不能寫入參數,你必須指定實際添加的數據類型。所以你應該把它作爲查詢字符串添加到目標網址中,或者你可以將它添加到請求的主體並使其成爲POST。