File.Exists из UNC с использованием хранилища Azure/Fileshare через IIS приводит к значению false.

Проблема: попытка вытащить изображение из лазурного файлового ресурса для манипуляции. Мне нужно прочитать файл как Drawing.Image для манипуляции. Я не могу создать действительный объект FileInfo или изображение, используя uncpath (что мне нужно сделать, чтобы использовать поверх IIS)

Текущая настройка: присоедините виртуальный каталог с именем "Фотографии" на веб-сайте IIS, указывающий на UNCPath общей папки Azure (например, \myshare.file.core.windows.net\sharename\pathtoimages). Это работает как http://example.com/photos/img.jpg поэтому я знаю, что это не проблема с разрешениями или аутентификацией.

По какой-то причине я не могу получить ссылку на файл.

var imgpath = Path.Combine(Server.MapPath("~/Photos"),"img.jpg") \\resolves as \\myshare.file.core.windows.net\sharename\pathtoimages\img.jpg var fi = new FileInto(imgpath); if(fi.exists) //this returns false 100% of the time var img = System.Drawing.Image.FromFile(fi.FullName);

Проблема в том, что файл никогда не обнаруживается, хотя я не могу взять этот путь и поместить его в окно проводника и вернуть img.jpg 100% времени.

Кто-нибудь есть идеи, почему это не будет работать? Нужно ли использовать объект CloudFileShare, чтобы просто прочитать файл, который, я знаю, там?

1 ответ

Оказывается, проблема в том, что мне нужно было обернуть мой код в олицетворение идентификатора пользователя общего файлового ресурса Azure, поскольку в данный момент виртуальный каталог на самом деле вообще не используется.

using (new impersonation("UserName","azure","azure pass"))
{
//my IO.File code
}

Я использовал этот сценарий подражания парням, найденный здесь. Можете ли вы объяснить, почему DirectoryInfo.GetFiles создает это исключение IOException?

Другие вопросы по тегам