【发布时间】:2014-05-09 06:53:17
【问题描述】:
应用程序启动后,我正在使用 ApplicationEventHanlder 创建内容。这是我的代码
公共类 CreateContent : ApplicationEventHandler { protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) { var root = applicationContext.Services.ContentService.GetRootContent(); var content = applicationContext.Services.ContentService.CreateContent("Profile", -1, "umbTextPage"); applicationContext.Services.ContentService.Save(内容); base.ApplicationStarted(umbracoApplication, applicationContext); } } [NullReferenceException:对象引用未设置为对象的实例。] Umbraco.Core.Security.AuthenticationExtensions.GetCurrentIdentity(HttpContextBase http, Boolean authenticateRequestIfNotFound) +127 Umbraco.Web.Security.WebSecurity.GetUserId() +55 Umbraco.Web.Security.WebSecurity.get_CurrentUser() +63 Umbraco.Web.NotificationServiceExtensions.SendNotification(INotificationService 服务,IUmbracoEntity 实体,IAction 动作,UmbracoContext umbracoContext,ApplicationContext applicationContext)+221 Umbraco.Web.NotificationServiceExtensions.SendNotification(INotificationService 服务,IUmbracoEntity 实体,IAction 动作,UmbracoContext umbracoContext)+118 Umbraco.Web.NotificationServiceExtensions.SendNotification(INotificationService 服务,IUmbracoEntity 实体,IAction 动作,ApplicationContext applicationContext)+111 Umbraco.Web.Strategies.c__DisplayClass7.b__2(IContentService 发件人,SaveEventArgs`1 args)+219 Umbraco.Core.Events.TypedEventHandler`2.Invoke(TSender sender, TEventArgs e) +0 Umbraco.Core.Events.EventExtensions.RaiseEvent(TypedEventHandler`2 eventHandler, TArgs args, TSender sender) +48 Umbraco.Core.Services.ContentService.Save(IContent 内容,布尔 changeState,Int32 userId,布尔 raiseEvents)+632 Umbraco.Core.Services.ContentService.Save(IContent 内容,Int32 用户 ID,布尔 raiseEvents)+47 MyUmbraco.CreateContent.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) 在 c:\Users\duongdd\Documents\Visual Studio 2013\Projects\MyUmbraco\MyUmbraco\CreateContent.cs:19 Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) +62 Umbraco.Core.CoreBootManager.b__5(IApplicationEventHandler x) +79 Umbraco.Core.EnumerableExtensions.ForEach(IEnumerable`1 项,Action`1 动作)+204 Umbraco.Core.CoreBootManager.Complete(Action`1 afterComplete) +185 Umbraco.Web.WebBootManager.Complete(Action`1 afterComplete) +74 Umbraco.Core.UmbracoApplicationBase.StartApplication(对象发送者,EventArgs e)+242 Umbraco.Core.UmbracoApplicationBase.Application_Start(对象发送者,EventArgs e)+40 [HttpException (0x80004005): 对象引用未设置为对象的实例。] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)+572 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext 上下文,MethodInfo[] 处理程序)+178 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态,MethodInfo[] 处理程序,IntPtr appContext,HttpContext 上下文)+218 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +369 System.Web.HttpApplicationFactory.GetPipelineApplicationInstance(IntPtr appContext, HttpContext context) +102 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +275 [HttpException (0x80004005): 对象引用未设置为对象的实例。] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文) +761 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文)+150 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+245有没有人遇到这个错误并提供解决方案?
谢谢!
【问题讨论】:
-
这是哪个版本的 Umbraco?从堆栈跟踪来看,通知服务导致了一些问题,但之前从未见过此类问题。
-
感谢@sitereactor。是的,你是对的。我下载了源代码并调试,通知服务在尝试保存或发布内容时导致问题。它不会从 WebSecurity 获取当前用户。我正在使用 Umbraco 7.1.1
标签: umbraco