2013-10-07 53 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

我更新了我的答案。 –

相关问题