使用App_Data虚拟目录

时间:2017-06-29 08:16:19

标签: forms umbraco

我们注意到在Umbraco 7.6.3上安装Forms 6.0.1并使用App_Data的虚拟目录导致CMS运行速度极慢。我们的一些客户拥有负载均衡的实时环境,并为App_Data,媒体等创建了虚拟目录。我们已将其站点从4.8.0升级到7.6.3,安装Forms并部署到演示环境后注意到CMS永远都在做任何事情。我们多年来一直在各种版本的Umbraco上使用App_Data的虚拟目录,从未遇到过这种方法的任何问题。

为了消除问题不是由于升级中的任何问题,我们可以按照以下步骤重新创建问题:

  1. 在本地开发机上安装了一个新的(干净版)Umbraco 7.6.3。
  2. 使用IIS设置localhost访问该站点(而不是IIS express)。
  3. 在IIS中为App_Data创建了一个虚拟目录,指向解决方案的Web根目录之外的文件夹。
  4. CMS中的页面加载时间平均约为。此时为750毫秒。
  5. 通过后台安装的表格。
  6. 安装Forms后,CMS中的页面加载时间显着增加,平均为21秒。
  7. 如果我们从IIS中删除虚拟目录或在web.config中设置fcnmode =“disabled”,CMS将再次执行。从我读到的设置fcnmode到禁用将停止文件更改通知,但这是一个缺点是应用程序池将不会被回收。这可能是我们必须要忍受的事情,但我很好奇Form正在做什么导致这种情况?表单之前已添加到App_Plugin文件夹而不是App_Data,是否有原因?

    Umbraco Log文件大小显着增加,包含以下内容:

    2017-06-27 09:37:12,192 [P23168/D99/T80] INFO Umbraco.Core.UmbracoApplicationBase - Application shutdown. Details: ConfigurationChange
    
    _shutDownMessage=CONFIG change
    HostingEnvironment initiated shutdown
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    CONFIG change
    HostingEnvironment caused shutdown
    
    _shutDownStack= at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
    at System.Environment.get_StackTrace()
    at System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()
    at System.Web.Hosting.HostingEnvironment.InitiateShutdownWithoutDemand()
    at System.Web.HttpRuntime.ShutdownAppDomain(String stackTrace)
    at System.Web.Configuration.HttpConfigurationSystem.OnConfigurationChanged(Object sender, InternalConfigEventArgs e)
    at System.Configuration.Internal.InternalConfigRoot.OnConfigChanged(InternalConfigEventArgs e)
    at System.Configuration.BaseConfigurationRecord.OnStreamChanged(String streamname)
    at System.Web.DirectoryMonitor.FireNotifications()
    at System.Web.Util.WorkItem.CallCallbackWithAssert(WorkItemCallback callback)
    at System.Web.Util.WorkItem.OnQueueUserWorkItemCompletion(Object state)
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
    at System.Threading.ThreadPoolWorkQueue.Dispatch()
    

1 个答案:

答案 0 :(得分:0)

我认为问题是正在从物理路径而不是虚拟路径读取此文件。 \ App_Data文件\ TEMP \ formsupdate

如果您在物理位置和虚拟位置都包含此文件,则应解决此问题。

我在这里报告了这个问题:http://issues.umbraco.org/issue/CON-1456