检查HttpContext.Request.Path时两次触发System.NullReferenceException求助
解决HttpContext中判断Request.Path时的NullReferenceException问题
你遇到的问题核心不是Path本身为空,而是context或者context.Request是null——在C#里访问嵌套属性时,必须确保每一层对象都不为null,否则还没到判断Path是否为null的步骤,就会触发NullReferenceException。
看你代码里的逻辑:不管是context.Request.Path != null还是context.Request.Path == null,都会先尝试获取context.Request,如果context或者Request是null,这一步直接报错,根本走不到判断Path的环节。
正确的处理方式
分步判断(兼容所有C#版本)
先逐层检查对象是否为空,再访问Path:
if (context != null && context.Request != null) { if (context.Request.Path != null) { // 处理Path不为null的场景 } else { // 处理Path为null的场景 } } else { // 处理context或Request为空的场景 }
使用空条件运算符(C# 6及以上版本)
用?.简化判断,它会在左侧对象为null时直接返回null,不会继续访问后续属性:
if (context?.Request?.Path != null) { // context、Request、Path都不为null时的逻辑 } else { // context、Request或Path任意一个为null时的逻辑 }
内容的提问来源于stack exchange,提问作者user1765862
相关产品推荐
相关产品推荐

