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