0

我有 asp.net 项目。我想在天蓝色平台上发布它。我的项目包含不同的静态内容:图像、javascript、css、html 页面等。我想将此内容存储在 azure blob 存储中。所以,我的问题是: 1) 有没有办法自动将这些内容从我的应用程序迁移到 blob 存储的过程?2) 如何使用从 blob 存储中检索的数据?任何例子都会很棒!

最好的问候,亚历山大

4

3 回答 3

1

首先,您尝试做的可能是创建跨站点脚本(它们将位于不同的域名上)或安全问题(如果您使用 SSL)。因此,请确保您确实想要将静态文件与网站的其余部分分开。

也就是说,最简单的方法是使用多种 Windows Azure 存储管理实用程序中的任何一种(Storage Explorer 或 Cerebrata 的 Storage Studio 都可以使用),将静态内容上传到 Windows Azure 存储 blob 容器。然后将该容器的权限设置为 publis read,以便任何使用 Web 浏览器的人都可以访问该容器的内容。

最后,更改对内容的所有引用以指向 blob 存储中的新 URI,并部署您的 ASP.NET Web 角色。

不过,如果我是你,我真的会看看你想用这种方法完成什么。通过将它放在 blob 存储中,您确实可以访问一些东西(例如启用 CDN),但作为一种权衡,您会失去对许多其他东西的控制(例如通过 IIS 对请求日志进行简化的访问控制,以告知何时有人在下载您的图像文件数万亿次以尝试增加您的账单)。因此,除非对此有坚实的需求,否则我通常建议不要这样做。

于 2012-04-10T12:33:28.737 回答
1

在@Brent 的回答中添加一点:将静态内容卸载到 blob 存储时,您将获得更多好处,例如减少 Web 角色实例的负载。

我在这个类似的 StackOverflow 问题上写了一个更详细的答案。

于 2012-04-10T12:47:58.467 回答
0

根据您对 Brent 的评论,您可能需要考虑将内容上传到 Blob 存储,然后通过 WebRole 代理它。您可以使用 HttpModule 之类的东西来相当无缝地完成此任务。

这有两个主要优点:

  1. 您可以添加/修改文件,而无需重新加载您的 Web 角色或在角色刷新时丢失它们。
  2. 如果您正在迁移站点,则文件可以保留在迁移前的相同 URL。

缺点:

  1. 您需要支付 Blob 访问的货币成本和 Web 角色的性能成本。
  2. 不能使用 Azure CDN。
  3. Blob 存储通常比磁盘访问更慢(延迟更高)。

我写了一个相当简单的模块来完成这个。我还没有把它张贴在任何公开的地方,但如果你要这样做,我可以给你发代码或其他东西。

于 2012-04-10T18:43:59.973 回答