سؤال

عندما أضيف أي من هؤلاء ...

<%@ 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. المشروع هو ASP.NET موقع الكتروني (على عكس أ application الويب أو MVC1/2 يكتب).
  2. اضطررت إلى إنشاء مجلد لعنصر التحكم ، الموجود على صفحة ASPX. (على سبيل المثال Controls InfoAdvice
  3. اضطررت إلى إنشاء مجلد للصفحة الرئيسية التي تستخدمها الصفحة Masterpages

ثم أضفت ملف TXT بسيطًا إلى كلا المجلدات الجديدة .. مع بعض المحتوى الوهمي فيها. مكّن ذلك من نشر تلك المجلدات (والملفات الوهمية) عند "إنشاء" المشروع للنشر (أستخدم مشاريع نشر الويب + TFS).

الآن يعمل.

لذلك كانت المشكلة أن التخزين المؤقت يتطلب فحص المجلد. أظن أن الحساب (Networksystem) لا يسمح له بإنشاء المجلد إذا لم يكن موجودًا .. على الرغم من أنني أعطيت أذونات يدويًا إلى المجلد الجذري (وأفترض ، الأطفال).

حسنًا - تم حل المشكلة. أنا لا أحب ذلك .. لكنه تم حله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top