2012-07-26 17 views

Trả lời

25

Đây có lẽ là những gì bạn đang sau

Uri theRealURL = new Uri(HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.RawUrl); 

    string yourValue= HttpUtility.ParseQueryString(theRealURL.Query).Get("yourParm"); 
+1

thực sự? Điều đó có thực sự cần thiết không? – james31rock

+0

điều này là chính xác những gì tôi muốn. – GilliVilla

+2

@ james31rock yes..really :) Câu hỏi không rõ ràng rằng một số thiên tài đã downvoted nó ... rawurl cần phải được xử lý theo cách này. Những gì người khác đã đề cập là chuỗi truy vấn mặc định. – GilliVilla

6

Không cần phải đi qua RawUrl - đối tượng Request đã chứa phiên bản được phân tích cú pháp, sử dụng thuộc tính Request.QueryString.

Đây là một chỉ mục NameValueCollection.

+3

Anh ấy đặc biệt yêu cầu cách thực hiện điều này trên RawUrl. Chuỗi truy vấn RawUrl và Request.QueryString không liên quan trong một số trường hợp, chẳng hạn như nếu bạn đang viết lại URL. Thực tế, anh ấy sử dụng RawUrl là một gợi ý mạnh mẽ anh ấy đang sử dụng viết lại URL. – NickG

+0

Trong quá khứ tôi cũng đã sử dụng 'Request.Params' (được đề xuất bởi @Piotr), điều này là tốt trong một số trường hợp. Trong các trường hợp khác, tôi đã chuyển sang 'Request.QueryString' như được đề xuất bởi @Oded. 'Request.QueryString' không kích hoạt xác thực thông số, mà bạn có thể muốn tránh ví dụ khi bạn chấp nhận HTML làm đầu vào. – Manfred

0

Có thuộc tính Params trên đối tượng Yêu cầu sẽ cho phép bạn thực hiện điều đó dễ dàng. Bạn không phải phân tích nó.

0

Hãy thử điều này:

string rawURL = HttpContext.Current.Request.ServerVariables["query_string"];

-3

này sẽ giải quyết vấn đề của bạn .....

string strReq = ""; 
strReq = HttpContext.Current.Request.RawUrl; 
strReq = strReq.Substring(strReq.IndexOf('?') + 1);