2009-02-14 38 views
0

HttpContext context =((HttpApplication)sender).Context;有關如何使用Web命名空間的此代碼的說明

在上面的例子中,爲什麼我們將發件人轉換爲HTTPApplication而不是HTTPContext?

另外,括號的目的是什麼?我知道他們是爲了鑄造,但是如果你擺脫了HTTPApplication和周圍的括號,那會留下:

(sender).Context; 

爲什麼不使用sender.Context?或者一般來說,爲什麼使用括號呢?我隱約記得這是一種鑄造方式,但不記得具體細節。

其次:

string url = context.Request["url"]; 
int cacheDuration = Convert.ToInt32(context.Request["cache"] ?? "0"); 
string contentType = context.Request["type"]; 

編輯:我意識到,你可以寫:

collection["key"] = "value"; 

這是一個基於密鑰的收集與您存儲值,其中有被稱爲「鍵」一鍵。所以我正確地認爲你得到的關鍵是「網址」的網址?

我知道這是使用HTTPContext,但在索引器中,「url」是什麼意思?這只是一個字符串說網址,甚至不是一個真正的網址。同樣適用於「緩存」和「類型」。如果有人在代碼的最後一行寫入「type」,是否返回使用的類型(HTTP/HTTPS)?

感謝

回答

1

它需要投senderHttpApplication因爲(大概)這是實際的類型 - 它,然後通過HttpApplication.Context屬性獲取HttpContext

鑑於此,您需要演員,因此包圍是合理的。

對於第二部分:"url""cache""type"是請求參數(這是documented來自於餅乾,表單提交,服務器變量或網址查詢參數)只是名稱。所以原來的URL可能是:

http://server.com/Foo.aspx?url=someurl&cache=10&type=text/plain

...或值可能來自餅乾等。我希望,鑑於信息,它們到哪真的那將是清楚的來自這種情況:)

+0

道歉爲清晰起見。我無法讓代碼在代碼視圖中顯示。無論如何,我不會在同一時間進行編輯,以防止數據損壞! :) – dotnetdev 2009-02-14 20:40:14