System.UnauthorizedAccessException: доступ к пути 'C: \ inetpub \ wwwroot \ website \ imagecache \ 0f \ ae1ea.jpg.tmp_4a1f20d7.tmp' запрещен - PullRequest
0 голосов
/ 30 апреля 2019

Использование imageresizer diskcache 4.2.5 и только недавно стало часто встречаться с этой ошибкой.Это после недавней публикации нового кода на нашем сайте.Мы ничего явно не изменили в наших знаниях, касающихся imageresizer, поэтому не уверены, связано ли это с новой версией, проблемой web.config и т. Д.

Мы используем предварительно скомпилированные представления в этом веб-приложении MVC 5.

Файл отладки Gist

Это работает годами.Похоже, что мы обновили пакет nuget этого с 3.4.3 до 4.2.5 пару месяцев назад.

При переходе к изображению напрямую ошибка не выдается.Самое смешное для меня - это соглашение об именах .tmp файла, к которому пытаются получить доступ.

Путь к изображению, которое пытается получить из журнала ошибок Elmah: C:\inetpub\wwwroot\website\Images\no_image.jpg?maxwidth=420&maxheight=420

Stacktrace:

System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\website\imagecache\0f\ae1ea13d9acc62f74c3da0f38e1b85328c07effdd1afce83d91b44f244a602f3.jpg.tmp_4a1f20d7.tmp' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at ImageResizer.Plugins.DiskCache.CustomDiskCache.<>c__DisplayClass29_0.<TryWriteFile>b__0()
   at ImageResizer.Plugins.DiskCache.LockProvider.TryExecute(String key, Int32 timeoutMs, LockCallback success)
   at ImageResizer.Plugins.DiskCache.CustomDiskCache.GetCachedFile(String keyBasis, String extension, ResizeImageDelegate writeCallback, Int32 timeoutMs, Boolean asynchronous)
   at ImageResizer.Plugins.DiskCache.DiskCache.Process(IResponseArgs e)
   at ImageResizer.Plugins.DiskCache.DiskCache.Process(HttpContext context, IResponseArgs e)
   at ImageResizer.InterceptModule.HandleRequest(HttpContext context, HttpModuleRequestAssistant ra, IVirtualFile vf)
   at ImageResizer.InterceptModule.CheckRequest_PostAuthorizeRequest(Object sender, EventArgs e)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.<>c__DisplayClass285_0.<ExecuteStepImpl>b__0()
   at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

1 Ответ

0 голосов
/ 05 мая 2019

Это означает, что приложение не имеет разрешения на запись в папку. Временное имя используется для предотвращения его подачи во время записи.

...