我的应用在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而不是我,可能是在包含该网站的VM上进行维护操作)。所以我得出结论,它发生在“关闭”操作期间,当系统尝试清除缓存时。
我正在使用这样的Asp.net缓存:HttpContext.Current.Cache[myKey] = something
我有不定义任何特定的回调,例如CacheItemRemovedCallback
。上面的callstack确认错误是在系统回调上。
它似乎是Azure特定的(甚至可能特定于Azure网站),因为内部部署服务器上的同一网站从未出现过这种错误。
您知道如何防止此错误发生吗?谢谢!