在我使用的控制器代码中:Request.Url.<Something>
。 ReSharper建议Request.Url
可以为空。
那么,什么时候Request.Url
可以为空呢?我不是在谈论测试,我只对一个已经部署的应用程序感兴趣。
请注意,到目前为止,我还没有收到使用NullReferenceException
的任何Request.Url
。
答案 0 :(得分:45)
HttpRequestBase
是一个类,ReSharper将其视为一个实际的类,仅此而已(从理论上讲,它可以是null
)。所以它不分析这个特定类的用法。
实际上,我认为Request.Url
永远永远不会null
,所以在这种情况下只需忽略ReSharper。
答案 1 :(得分:14)
使用NullReferenceException
时,实际上可能会发生Request.Url
。当您创建自己的其他类派生的基本控制器类时,Request
将为null。或者在将ActionMailer与ASP.NET MVC一起使用时,您必须创建一个派生自MailerBase
的控制器类(这也导致此控制器中的Request
为空)。
替代方法:使用HttpContext.Current.Request
或检查Request
是否为空。