代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

将OutputCache添加到ASP.NET Webform会导致我的网站崩溃:(

  •  2
  • Pure.Krome  · 技术社区  · 14 年前

    当我加上其中一个…

    <%@ OutputCache Duration="600" Location="Any" VaryByParam="*" %>
    

    <%@ OutputCache CacheProfile="CmsArticlesListOrItem" %>
    
    (.. and this into the web.config file...)
    <caching>
        <outputCacheSettings>
            <outputCacheProfiles>
                <add name="CmsArticlesListOrItem" duration="600" varyByParam="*" />
             </outputCacheProfiles>
        </outputCacheSettings>
    
        <sqlCacheDependency ........ ></sqlCacheDependency
    </caching>
    

    我的页面/网站崩溃,出现以下错误:

    Source: System.Web
    ----------------------------------------------------------------------------
    TargetSite: System.Web.DirectoryMonitor FindDirectoryMonitor(System.String, Boolean, Boolean)
    ----------------------------------------------------------------------------
    Message:System.Web.HttpException: Directory 'C:\Web Sites\My Site Foo - Main Site\Controls\InfoAdvice' does not exist. Failed to start monitoring file changes.
       at System.Web.FileChangesMonitor.FindDirectoryMonitor(String dir, Boolean addIfNotFound, Boolean throwOnError)
       at System.Web.FileChangesMonitor.StartMonitoringPath(String alias, FileChangeEventHandler callback, FileAttributesData& fad)
       at System.Web.Caching.CacheDependency.Init(Boolean isPublic, String[] filenamesArg, String[] cachekeysArg, CacheDependency dependency, DateTime utcStart)
       at System.Web.Caching.CacheDependency..ctor(Int32 dummy, String[] filenames, DateTime utcStart)
       at System.Web.Hosting.MapPathBasedVirtualPathProvider.GetCacheDependency(String virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
       at System.Web.ResponseDependencyList.CreateCacheDependency(CacheDependencyType dependencyType, CacheDependency dependency)
       at System.Web.HttpResponse.CreateCacheDependencyForResponse(CacheDependency dependencyVary)
       at System.Web.Caching.OutputCacheModule.InsertResponse(HttpResponse response, HttpContext context, String keyRawResponse, HttpCachePolicySettings settings, CachedVary cachedVary, CachedRawResponse memoryRawResponse)
       at System.Web.Caching.OutputCacheModule.OnLeave(Object source, EventArgs eventArgs)
       at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
    

    好啊。。所以出于某种原因, OutputCache 想要有一个文件夹/文件吗?????

    好吧,我已经在这个网站上运行了3年了,我很确定这些文件夹 \Controls \Controls\InfoAdvice 我的生产服务器上不存在。在我的本地主机上,它确实..并包含大量ascx控件。

    但它们不存在于我的实时服务器上。

    所以…这是怎么回事?

    有人能帮忙吗?

    哦:)在有人建议我创建这两个文件夹,甚至在这些文件夹中随机粘贴一个文件之前。在那些随机文件中有一些随机文本。我这样做了,但似乎没用,仍然:(

    请帮忙!

    更新

    当我试图用iis进行失败的请求跟踪时,我注意到…

    alt text http://img136.imageshack.us/img136/1351/notsure.png

    1 回复  |  直到 14 年前
        1
  •  0
  •   Pure.Krome    14 年前

    嗯。我不确定这是不是一个可以接受的答案,但我已经很难搞清楚了。

    1. 该项目是一个asp.net 网站 (与 网络应用 MVC1/2 类型)。
    2. 我必须为控件创建一个文件夹,它存在于aspx页面上。(例如.\controls\infoadvice)
    3. 我必须为母版页创建一个文件夹,供页/母版页使用

    然后我在这两个新文件夹中添加了一个简单的txt文件。里面有些假内容。这使得这些文件夹(和虚拟文件)能够在项目“构建”进行部署时发布(我使用的是web部署项目+tfs构建)。

    现在它工作了。

    所以问题是缓存需要检查文件夹。我猜帐户(networksystem)不允许它创建文件夹(如果它不存在的话)。即使我手动授予根文件夹权限(我假设是子文件夹)。

    哦,问题解决了。我不喜欢…但问题解决了。