1

在 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 实例中。谢谢

4

1 回答 1

2

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

但是,要访问内容文件夹中的文件,请参阅此SO 帖子

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");
于 2014-06-03T16:17:08.313 回答