Request.Url什么时候可以为空?

时间:2012-08-27 06:18:07

标签: asp.net-mvc-3 controller resharper

在我使用的控制器代码中:Request.Url.<Something>。 ReSharper建议Request.Url可以为空。

那么,什么时候Request.Url可以为空呢?我不是在谈论测试,我只对一个已经部署的应用程序感兴趣。

请注意,到目前为止,我还没有收到使用NullReferenceException的任何Request.Url

2 个答案:

答案 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是否为空。