使用谷歌浏览器时,HttpContext.Current为null

时间:2013-11-01 07:13:34

标签: asp.net-mvc

我正在开发一个ASP.NET MVC 5应用程序,并将以下代码放在我的DbContextInitializer类'Seed()方法中。

string filePath = HttpContext.Current.Server.MapPath("~/Images/" + file);

问题是,每当我在Google Chrome中运行ASP.NET MVC时,HttpContext.Current null在调用NullReferenceException方法时导致Seed() Seed()。我尝试过Internet Explorer和Fire Fox,但不会发生错误。我甚至在隐身模式下尝试了Google Chrome,但错误仍然存​​在。你们有什么可能导致这个错误的想法吗?提前谢谢。

更新: 使用谷歌浏览器时,即使在主页上运行我的Web应用程序也会立即执行{{1}}方法,因为尚未对数据库进行查询,因此该主页不应执行。 IE和Fire Fox没有这种行为。

1 个答案:

答案 0 :(得分:2)

请改用:

string filePath = HostingEnvironment.MapPath("~/Images/" + file);

这样你就不会在被剥夺任何HttpContext的方法和线程中获得NRE。

至于为什么HttpContext.Current为null,好吧,可能有很多原因。您的代码在Web应用程序的初始化中运行,并且您的应用程序正在使用集成管道模式,或者您正在一个单独的线程中运行代码,其中根本没有上下文。

结论:远离HttpContext.Current。每当你使用它时,你应该问自己是否有更好的方法来实现你想要达到的目标。总是存在。