2015-03-02 48 views
2

我试图在现有的sitecore WebForms应用程序中设置Mvc4路由。Mvc 4在sitecore WebForms应用程序中的路由System.Web.AsyncStepCompletionInfo.RegisterBeginUnwound NullReferenceException

我已经添加了以下内容:

routes.MapPageRoute("WebForm", "WebForm", "~/WebForm1.aspx"); 

导航到/WebForm给出了以下异常:

[NullReferenceException: Object reference not set to an instance of an object.] 
System.Web.AsyncStepCompletionInfo.RegisterBeginUnwound(IAsyncResult asyncResult, Boolean& operationCompleted, Boolean& mustCallEndHandler) +32 
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +516 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +287 

回答

2

当Sitecore的CMS启用MVC我面临着同样的例外。我发现原因是Sitecore只接受IAsyncHttpHandler路由。

技术上Sitecore.Mvc.Pipelines.Loader.InitializeRoutes管道包裹处理程序与RouteHandlerWrapper并调用它通过异步RouteHttpHandler抛出的情况下,您的处理器不是从IHttpAsyncHandler继承除外。

为了避免它,你应该后Sitecore.Mvc.Pipelines.Loader.InitializeRoutes管道在Sitecore.Mvc.config注册您的路线:

<initialize> 
    <processor type="Sitecore.Mvc.Pipelines.Loader.InitializeGlobalFilters, Sitecore.Mvc"/> 
    <processor type="Sitecore.Mvc.Pipelines.Loader.InitializeControllerFactory, Sitecore.Mvc"/> 
    <processor type="Sitecore.Mvc.Pipelines.Loader.InitializeRoutes, Sitecore.Mvc"/> 
    <!-- Register your routes here --> 
</initialize> 

或者,也可以让你处理程序,以异步工作:

public class MyHandler : IHttpAsyncHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     // do your work here 
    } 

    public bool IsReusable { get { return false; } } 

    protected delegate void AsyncProcessorDelegate(HttpContext context); 

    private AsyncProcessorDelegate _processorDelegate; 

    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) 
    { 
     _processorDelegate = new AsyncProcessorDelegate(ProcessRequest); 
     return _processorDelegate.BeginInvoke(context, cb, extraData); 
    } 

    public void EndProcessRequest(IAsyncResult result) 
    { 
     _processorDelegate.EndInvoke(result); 
    } 
} 
相关问题