如何在Azure Cloud Service WebRole中引用本地文件

时间:2014-06-03 10:06:27

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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