40

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

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

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

4

2 回答 2

48

HttpRequestBase是一个类,ReSharper 将其视为一个实际的类,仅此而已(理论上,它可以null)。所以不分析这个具体Class的用法。

实际上,我认为这Request.Url永远不会null,所以在这种情况下忽略 ReSharper 。

于 2012-08-27T06:37:55.907 回答
15

实际上NullReferenceException在使用时会发生Request.Url. 当您创建自己的其他类派生自的基本控制器类时,Request将为空。或者在将 ActionMailer 与 ASP.NET MVC 一起使用时,您必须创建一个派生自的控制器类MailerBase(这也会导致Request该控制器内部为空)。

替代方案:使用HttpContext.Current.Request或检查是否Request为空。

于 2014-03-02T08:26:59.050 回答