2013-10-07 81 views
4

我試圖創建一個簡單的代碼來檢索字符串爲當前網址如下:如何正確實例化HttpContext對象?

string currentURL = HttpContext.Current.Request.Url.ToString(); 

不過,我在運行代碼時出現錯誤:Object reference not set to an instance of an object.

我想我必須創建一個HttpContext的實例。 HttpContext的參數是HttpContext(HttpRequest request, HttpResponse response)HttpContext(HttpWorkerRequest wr)

是否有文檔詳細說明如何使用這些參數?我對C#相當陌生,所以我不完全確定如何正確地實例化這個對象,還沒有找到任何有用的資源(包括MS庫)。

+4

你爲什麼要*創造*'HttpContext'的實例? **此代碼位於何處?**您不想自行創建它,它是在發生路由時創建的。 –

+0

聽起來像你在做一個實用課程。在這種情況下,在代碼隱藏中使用HttpContext並在實用程序類中執行任何實用程序。我之前有過這個問題。 – RealityDysfunction

+0

事實上,你得到一個'ObjectReference'異常並不意味着'Current'上下文是'null'。你有兩個可能會引發這個錯誤的鏈接屬性。你確定它是'Current'上下文屬性嗎? –

回答

5

HttpContext對象由ASP.NET基礎結構實例化,每個請求線程一次。 您必須在Web服務器(例如IIS)上運行ASP.NET以使其可用。這並不意味着要在用戶代碼中初始化。您已通過HttpContext.Current靜態屬性訪問該實例。 它將爲空如果你是而不是運行ASP.NET。

如果你真的想,但是,你可以實例化一個基於請求與現有HttpContext的響應:

var request = HttpContext.Current.Request; 
var response = HttpContext.Current.Response; 
var newContext = new HttpContext(request, response); 
+0

我更新了我的答案。 –

相關問題