From 45e9c2862abb83c7b4af5161ccc444c2f3f5fc9f Mon Sep 17 00:00:00 2001 From: Renaud Paquay Date: Sun, 21 Nov 2010 16:55:33 -0800 Subject: [PATCH] Fix occasional YSOD under IIS7 when config changes Don't access HttpContext.Current, use our accessor abstraction instead. Work Items: 16823 --HG-- branch : dev --- .../Environment/DefaultHostEnvironment.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Orchard/Environment/DefaultHostEnvironment.cs b/src/Orchard/Environment/DefaultHostEnvironment.cs index d9616b7aa..adb6421ee 100644 --- a/src/Orchard/Environment/DefaultHostEnvironment.cs +++ b/src/Orchard/Environment/DefaultHostEnvironment.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection; using System.Web; using System.Web.Hosting; +using Orchard.Mvc; using Orchard.Services; using Orchard.Utility.Extensions; @@ -12,10 +13,11 @@ namespace Orchard.Environment public class DefaultHostEnvironment : IHostEnvironment { private readonly IClock _clock; + private readonly IHttpContextAccessor _httpContextAccessor; - public DefaultHostEnvironment(IClock clock) - { + public DefaultHostEnvironment(IClock clock, IHttpContextAccessor httpContextAccessor) { _clock = clock; + _httpContextAccessor = httpContextAccessor; } public bool IsFullTrust @@ -46,17 +48,18 @@ namespace Orchard.Environment // If setting up extensions/modules requires an AppDomain restart, it's very unlikely the // current request can be processed correctly. So, we redirect to the same URL, so that the // new request will come to the newly started AppDomain. - if (HttpContext.Current != null) + var httpContext = _httpContextAccessor.Current(); + if (httpContext != null) { // Don't redirect posts... - if (HttpContext.Current.Request.RequestType == "GET") + if (httpContext.Request.RequestType == "GET") { - HttpContext.Current.Response.Redirect(HttpContext.Current.Request.ToUrlString(), true /*endResponse*/); + httpContext.Response.Redirect(HttpContext.Current.Request.ToUrlString(), true /*endResponse*/); } else { - HttpContext.Current.Response.WriteFile("~/Refresh.html"); - HttpContext.Current.Response.End(); + httpContext.Response.WriteFile("~/Refresh.html"); + httpContext.Response.End(); } } }