HttpContext.Current.Request导致外部C#类中的空对象引用

时间:2018-03-12 08:59:04

标签: c# asp.net-mvc httpcontext

我用来从代码本身获取网址。但是,我尝试生成网址的代码位于外部C#类中。

string url = HttpContext.Current.Request.Url.Scheme + System.Uri.SchemeDelimiter + HttpContext.Current.Request.Url.Host +
                        (HttpContext.Current.Request.Url.IsDefaultPort ? "" : ":" + HttpContext.Current.Request.Url.Port);

The error above line giving is : Object reference not set to an Instance of an Object 该类位于Solution的Helpers文件夹下。据我所知,它已经对类的位置做了些什么,好像上面的代码已经存在于任何Controller中,然后就会产生web url。

已更新

在Application_Start方法中的 Global.asax 文件中,我调用上述类。

2 个答案:

答案 0 :(得分:2)

Request对象不适用于Application_Start事件

ASP.NET Application Life Cycle 表示此事件不代表Http个事件。

  

Application_Start和Application_End方法是不代表HttpApplication事件的特殊方法。 ASP.NET在应用程序域的生命周期内调用它们一次,而不是为每个HttpApplication实例调用它们。

您可以通过此链接HttpApplication Class on MSDN

查看HttpApplication代表的内容

答案 1 :(得分:0)

Application_Start事件在没有附加请求的情况下引发。请求对象尚不可用。 (例如,在预加载应用程序时可以引发它。在这种情况下,根本没有请求。)

您可以使用Begin_Request事件并检查它是否是该会话中的第一次。