Ошибка "Отказано в доступе" при закрытии моего веб-сайта Azure (удаление элементов кэша)
Мое приложение хорошо работает на веб-сайтах Azure (не веб-роль, исключите ответы, относящиеся к конкретной веб-роли!), Но иногда я получаю в журналах следующую ошибку:
System.UnauthorizedAccessException: Access to the path 'C:\DWASFiles\Sites\myAzureWebSiteNameHere\VirtualDirectory0\site\wwwroot' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator`1.CommonInit()
at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.EnumerateFiles(String path)
at System.Web.WebPages.Deployment.WebPagesDeployment.AppRootContainsWebPagesFile(String path)
at System.Web.WebPages.Deployment.PreApplicationStartCode.OnChanged(String key, Object value, CacheItemRemovedReason reason)
at System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback callback, CacheItemRemovedReason reason)
Это произошло незадолго до перезапуска сайта (Azure, а не я, вероятно, для операции обслуживания на виртуальной машине, содержащей сайт). Поэтому я пришел к выводу, что это произошло во время операции "выключения", когда система пытается очистить кэш.
Я использую кэш Asp.net следующим образом: HttpContext.Current.Cache[myKey] = something
и я не определил какой-либо конкретный обратный вызов, как CacheItemRemovedCallback
, Вышеупомянутый стек вызовов подтверждает, что ошибка находится в системном обратном вызове.
Похоже, что он специфичен для Azure (и, возможно, даже специфичен для веб-сайтов Azure), потому что на одном и том же веб-сайте на локальном сервере такой ошибки не было.
Знаете ли вы, как предотвратить возникновение этой ошибки? Спасибо!