在我使用的控制器代码中:Request.Url.<Something>
。 ReSharper建议Request.Url
可以为空。什么时候可以Request.Url为空?
那么,何时Request.Url
可以为空?我不是在说测试,我只关心已经部署的应用程序。
请注意,直到目前为止,我还没有收到任何从使用Request.Url
。
在我使用的控制器代码中:Request.Url.<Something>
。 ReSharper建议Request.Url
可以为空。什么时候可以Request.Url为空?
那么,何时Request.Url
可以为空?我不是在说测试,我只关心已经部署的应用程序。
请注意,直到目前为止,我还没有收到任何从使用Request.Url
。
HttpRequestBase
是一个类,ReSharper将其视为一个实际类,没有更多(理论上它可以是null
)。所以它不会分析这个特定类的用法。
在现实中,我认为Request.Url
将永远是null
,所以就忽略了在这种情况下,ReSharper的。
实际上NullReferenceException
可以发生在使用Request.Url
时。当您创建其他类从其派生的自己的基础控制器类时,Request
将为空。或者在ASP.NET MVC中使用ActionMailer时,您必须创建一个派生自MailerBase
的控制器类(这也会导致此控制器内的Request
为空)。
可选:使用HttpContext.Current.Request
或检查Request
是否为空。
System.Web.HttpContext.Current.Request :) – lsp
供参考:如果您的基本控制器继承自控制器,Request.Url非空,即BaseController:控制器 –
只要知道使用'系统。 Web.HttpContext'可能会干扰需要模拟'HttpContext'的测试(因为在单元测试期间没有发生实际的IIS请求)。请参阅[HttpContextBase与HttpContext](http://www.splinter.com.au/httpcontext-vs-httpcontextbase-vs-httpcontext/)和[如何从HttpContext.Current获取HttpContextBase对象](http:// thecodersperspective。 blogspot.com/2011/07/how-to-get-httpcontextbase-object-from.html) – ErikE
好大喊,我想有时候resharper可能是一件危险的事情,但没有它我可能不会读这个。干杯。 PS拥抱和亲吻resharper :) – Adam