C# 用户代码未处理NullReferenceException

C# 用户代码未处理NullReferenceException,c#,asp.net,C#,Asp.net,下面的代码放在页面加载中。当你们第一次直接进入页面并且并没有推荐人时,我应该如何处理这个问题以绕过URLreferer? 我错过了什么 if (HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null) { urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString(); } else {

下面的代码放在页面加载中。当你们第一次直接进入页面并且并没有推荐人时,我应该如何处理这个问题以绕过URLreferer? 我错过了什么

    if (HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null)
    {
        urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
    }
    else
    {
        urlReferer = "";
    }

谁说客户机在HTTP请求中通过了推荐人

首先检查
urlreferer
是否为
null

if (HttpContext.Current.Request.UrlReferrer != null)
    {
        urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
    }
    else
    {
        urlReferer = "";
    }

我相信您需要检查
HttpContext.Current.Request.urlReferer!=空值

只需检查
URLreferer
中的空值:

if (HttpContext.Current.Request.UrlReferrer != null 
    && HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null)
{
     urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
}     
else     
{         
    urlReferer = "";     
} 

如果URLreferer为null,则对AbsolutUri的测试将失败


尝试最初测试URLreferer是否为null,这可能会更正此问题。

使用调试器。如果您在VisualStudio外运行此程序,则在引发异常时,可能会将您带到调试器窗口。调试器底部有多个选项卡,包括“Locals”和“Watch”,您可以使用这些选项卡查看存储了哪些变量

如果上述代码确实是导致问题的原因,那么

HttpContext.Current.Request.urlReferer.AbsoluteUri


HttpContext.Current.Request.urlReferer


HttpContext.Current.Request


HttpContext.Current


HttpContext


设置为null

为什么这种方法比检查null要干净得多

private void Page_Load()
{
    if (!IsPostBack)
    {
        if (HttpContext.Current.Request.UrlReferrer != null)
        {
            urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
        }
        else
        {
            urlReferer = "";
        }
    }
}

当尝试检查if(HttpContext.Current.Request.UrlReferer.AbsoluteUri!=null)时,如果HttpContext.Current.Request.UrlReferer.AbsoluteUri==null,这将抛出NullReferenceException,然后抛出未设置为对象实例的NullReferenceException-对象引用,因此我不能使用此语法,但要检查if(HttpContext.Current.Request.urlReferer!=null)在我的代码中工作,并且将它放在(!IsPostBack)中会使它更好。