mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Fix empty RouteData issue in IoC RequestContext
Since we wrap the MvcHandler with our own handler, we need to dig down the RequestContext instance a bit deeper. --HG-- branch : dev
This commit is contained in:
7
src/Orchard/Mvc/IHasRequestContext.cs
Normal file
7
src/Orchard/Mvc/IHasRequestContext.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using System.Web.Routing;
|
||||
|
||||
namespace Orchard.Mvc {
|
||||
public interface IHasRequestContext {
|
||||
RequestContext RequestContext { get; }
|
||||
}
|
||||
}
|
@@ -48,6 +48,12 @@ namespace Orchard.Mvc {
|
||||
return mvcHandler.RequestContext;
|
||||
}
|
||||
|
||||
var hasRequestContext = httpContext.Handler as IHasRequestContext;
|
||||
if (hasRequestContext != null) {
|
||||
if (hasRequestContext.RequestContext != null)
|
||||
return hasRequestContext.RequestContext;
|
||||
}
|
||||
|
||||
return new RequestContext(httpContext, new RouteData());
|
||||
}
|
||||
|
||||
|
@@ -122,7 +122,7 @@ namespace Orchard.Mvc.Routes {
|
||||
}
|
||||
}
|
||||
|
||||
class HttpHandler : IHttpHandler, IRequiresSessionState {
|
||||
class HttpHandler : IHttpHandler, IRequiresSessionState, IHasRequestContext {
|
||||
protected readonly ContainerProvider _containerProvider;
|
||||
private readonly IHttpHandler _httpHandler;
|
||||
|
||||
@@ -144,6 +144,13 @@ namespace Orchard.Mvc.Routes {
|
||||
_containerProvider.EndRequestLifetime();
|
||||
}
|
||||
}
|
||||
|
||||
public RequestContext RequestContext {
|
||||
get {
|
||||
var mvcHandler = _httpHandler as MvcHandler;
|
||||
return mvcHandler == null ? null : mvcHandler.RequestContext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class HttpAsyncHandler : HttpHandler, IHttpAsyncHandler {
|
||||
@@ -173,7 +180,6 @@ namespace Orchard.Mvc.Routes {
|
||||
_containerProvider.EndRequestLifetime();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -197,6 +197,7 @@
|
||||
<Compile Include="Mvc\Extensions\ControllerExtensions.cs" />
|
||||
<Compile Include="Mvc\Html\FileRegistrationContextExtensions.cs" />
|
||||
<Compile Include="Mvc\Extensions\UrlHelperExtensions.cs" />
|
||||
<Compile Include="Mvc\IHasRequestContext.cs" />
|
||||
<Compile Include="Mvc\Routes\UrlPrefix.cs" />
|
||||
<Compile Include="Mvc\Routes\UrlPrefixAdjustedHttpContext.cs" />
|
||||
<Compile Include="Mvc\Routes\ShellRoute.cs" />
|
||||
|
Reference in New Issue
Block a user