VHD驱动器的服务器路径

时间:2012-04-05 07:24:57

标签: c# azure-storage

我想获得VHD驱动器的服务器路径。我正在研究azure web应用程序。我上传了一些文件并将其保存到Test.VHD驱动器(比如说)。这是一个blob容器内的云驱动器“驱动器”(比方说)。我通过以下方式安装并映射它:

driveLetter = drive.Mount(localCache.MaximumSizeInMegabytes - 20, DriveMountOptions.Force);

“driveLetter”是“A:\”(比如说)。现在我将所有pdf文件名显示为页面上的链接按钮。点击这些文件,我想通过使用javascript函数在浏览器中打开该pdf文件

window.open(pdfPath, pdfName, 'scrollbars=yes, resizable=yes');

我的问题是我必须作为“pdfPath”参数传递什么?

我有路径“A:\ Uploads \ pdfName.pdf”。但我无法通过它。我必须像http://servername:port/path一样传递它,以便用户可以查看它。

但我不知道如何将其转换为http://servername:port/path之类的链接。通过这样做,我可以在浏览器中查看pdf。

请帮助我,

提前致谢。

2 个答案:

答案 0 :(得分:0)

那里有一点混乱。

天蓝色驱动器在技术上是存储在Azure Blob存储中的blob,因此它具有URL。相反,使用URL无法直接访问Azure驱动器的CONTENTS。如果要公开Azure驱动器中包含的文件,则必须从Windows Azure实例访问它们。

您可以通过在装入驱动器时将Azure驱动器映射为IIS中的虚拟文件夹来执行此操作。如果您在.Net中编码,请查看System.Web.Administration(您必须将它包含在您的项目中,它是IIS的一部分,而不是直接在CLR中)。如果您使用其他语言编写代码,最简单的方法是调用appcmd.exe来定义虚拟文件夹。

皮尔

答案 1 :(得分:0)

我意识到这并没有直接回答你的问题,但是......我认为你会通过写入Azure Drives看到你正在做的事情有一些限制:

  • 在任何给定时间,只有一个Role实例可以拥有对vhd的写入权限。这意味着除非每个实例都有一个唯一的vhd(或者每个add'l实例只生成一个只读快照),否则您的解决方案将超出一个实例。
  • 您现在必须通过您的Role实例来访问单个文件,因为您无法提供指向vhd内外文件的直接链接
  • 要管理任何文件,您必须安装Azure驱动器。这意味着您无法管理Windows Azure之外的代码中的任何文件(Azure驱动器只能由Windows Azure角色实例安装)

我建议将单个文件写入单个blob。与在您的方案中使用Azure驱动器相比,这有几个优点:

  • 任何实例都可以读/写每个单独的文件(每个文件都在一个单独的blob中)
  • 您可以选择在网页中嵌入直接文件网址。这提供了对blob的直接访问,而无需通过您的一个Role实例进行路由(反过来,由于不需要IIS,因此会从所述实例中加载)
  • 您可以选择将单个blob设为私有,仍然通过共享访问签名
  • 向私有blob提供网址
  • 您可以远程管理单个blob,并且有几个第三方工具可以帮助您执行此操作。
  • 如果您愿意,可以为您的存储启用CDN(边缘缓存),然后让您将URL指向CDN链接,而不是直接指向源blob。这仅限于面向公众的blob。