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?