2016-11-24 116 views
0

我在尝试通过Nuget或手动,合并文件等进行升级时遇到了问题。我最终得到的结论是,当我启动第一个网站时本地时间使用http://localhost:81(这在升级前工作正常),我不断收到下面的错误消息。从Umbraco 7.1.9升级到7.5.4的问题

正在被重定向的URL如下:

http://localhost:81/install?redir=true&url=http%3a%2f%2flocalhost%3a81%2f

如果我尝试访问后端我也得到了同样的信息。我下载了一个Umbraco源代码的副本,并且在调试时可以在Umbraco.Web文件WebSecurity.cs中看到,方法IsAuthenticated()对_httpContext.User显示为空。

任何想法可能是什么问题?

[NullReferenceException: Object reference not set to an instance of an object.] 
    Umbraco.Web.Security.WebSecurity.IsAuthenticated() +19 
    Umbraco.Web.Security.WebSecurity.ValidateCurrentUser(Boolean throwExceptions) +17 
    Umbraco.Web.Install.Controllers.InstallController.Index() +142 
    lambda_method(Closure , ControllerBase , Object[]) +35 
    System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 
    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +157 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22 
    System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 
    System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 
    System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36 
    System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9644097 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 
+0

您好,我从一把umbraco 7.6.6升级到任何更高版本时有相同的错误。试过7.7.7,7.6.11和7.6.7,都显示这个错误。即时通讯使用结构图,但解决方案@rybl sugested并不适合我。我已经在我的全球asax中使用了默认的UmbracoApplication。你可能找到了不同的解决方案吗? Thtnx – Pierre

回答

0

仔细检查web.config文件的成员资格提供程序部分是否已正确合并。我认为这些版本之间有一些用户更改,有些位稍有改变?我也会清除你的cookies,以防万一,因为有时我在升级后遇到了UmbracoContext cookies问题。

+0

感谢您的信息。我仔细检查了会员供应商部分,所有事情都应该与之前的版本和新的7.5.4版本进行比较。我也清除了我的Cookie,并确保我使用Chrome的隐身模式,但仍然存在问题。 –

0

我遇到了同样的问题,想分享我的经验。

我发现问题是我使用自定义的UmbracoApplication实现来执行依赖注入。

我相信安装过程必须使用应用程序通常不使用的一些依赖项。

要解决此问题,我将Global.asax更改为默认的UmbracoApplication类。然后,数据库更新后,我切换回我的自定义类。

我确定有一个更好的方法来解决这个问题,但我想记录我发现的情况,以防万一有人遇到同样的问题,并希望找到正确的方向或快速修复。

我的代码如下:

<%-- Live App --%> 
<%@ Application Inherits="Foo.WebsiteUmbracoApplication" Language="C#" %> 
<%-- For Umbraco DB Updates --%> 
<%--<%@ Application Inherits="Umbraco.Web.UmbracoApplication" Language="C#" %>--%> 
using System; 
using System.Web.Http; 
using System.Web.Mvc; 
using Umbraco.Web; 

namespace Foo 
{ 
    public class WebsiteUmbracoApplication : UmbracoApplication 
    { 
     protected override void OnApplicationStarted(object sender, EventArgs e) 
     { 
      base.OnApplicationStarted(sender, e); 

      ConfigureDependencyInjection(); 
      ConfigureFormatters(); 
     } 

     private static void ConfigureDependencyInjection() 
     { 
      var container = UnityConfig.ConfiguredContainer; 
      // MVC 
      DependencyResolver.SetResolver(new Microsoft.Practices.Unity.Mvc.UnityDependencyResolver(container)); 
      // Web API 
      GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container); 
     } 

     private static void ConfigureFormatters() 
     { 
      var formatters = GlobalConfiguration.Configuration.Formatters; 
      formatters.Remove(formatters.XmlFormatter); 
     } 
    } 
}