【问题标题】:How to refer to local file in Azure Cloud Service WebRole如何在 Azure 云服务 WebRole 中引用本地文件
【发布时间】:2014-06-03 10:06:27
【问题描述】:

在 ASP.net MVC 5 WebRole 中,我使用 MaxMind Geo IP 数据库,其 API 使用如下字符串:

  var reader = new DatabaseReader    (@"C:\Users\User\Source\Workspaces\myproject\Contents\db.mmdb");

它需要一个完整的物理路径,相对路径不起作用。 问题是:将WebRole部署在云端,如何检索数据库?

在实例中通过远程连接进入,可以看到文件在那里,路径是:

var reader = new DatabaseReader(@"E:\sitesroot\0\Contents\db.mmdb");

但这不起作用,我有一个异常找不到文件'E:\sitesroot\0\Contents\db.mmdb'。

我该怎么办?我应该使用 BLOB 吗? 数据库需要快速访问,因为它每天可以调用数亿次,我不知道 BLOB 是否可以支持这些数量的同时连接,所以我更喜欢将它放在 VM 实例中。 谢谢

【问题讨论】:

  • 显然有问题。可能是在运行代码时该文件还不存在,但稍后才出现,然后您在那里 RD 并查看该文件?文件是如何准确到达那里的?

标签: azure azure-web-roles maxmind azure-cloud-services


【解决方案1】:

在 CloudService WebRole 中使用基于文件的数据库是一个非常糟糕的主意 - 每次部署 WebRole 时,数据库都会被覆盖。没有简单的方法来保证并发性。也就是说,最好使用 Azure Sql 或 MySql(或任何其他不会在每次部署新代码时被覆盖的数据库。BLOB 可以用于文件存储,但不能用于动态数据库,并且大小限制会让您进入也麻烦。

要访问内容文件夹中的文件,请参阅SO post

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");

【讨论】:

  • 对于这个特定的任务 - 使用小型只读数据库 - 基于文件的数据库就可以了。
  • 这就是我要找的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2016-02-21
  • 1970-01-01
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
相关资源
最近更新 更多