来自UNC的File.Exists使用Azure Storage / Fileshare通过IIS导致错误。

时间:2018-04-04 18:25:36

标签: azure system.io.file fileshare

问题: 试图从azure文件共享中获取图像以进行操作。我需要将文件读作Drawing.Image进行操作。我无法使用uncpath创建有效的FileInfo对象或Image(我需要这样做以便在IIS上使用)

当前设置: 在IIS网站中附加名为Photos的虚拟目录,指向Azure文件共享的UNCPath(例如\ myshare.file.core.windows.net \ sharename \ pathtoimages) 这有效http://example.com/photos/img.jpg,因此我知道这不是权限或身份验证问题。

由于某些原因,我无法获得对File的引用。

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);

问题是文件永远不会存在,即使我不能将该路径放在资源管理器窗口中并且100%返回img.jpg。

有谁知道为什么这不起作用? 我是否需要使用CloudFileShare对象才能读取我知道的文件?

1 个答案:

答案 0 :(得分:0)

事实证明问题在于我需要将我的代码包装在模拟azure文件共享userid中,因为此时虚拟目录根本没有真正发挥作用。

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

我在这里找到了这个人模仿脚本。 Can you explain why DirectoryInfo.GetFiles produces this IOException?