在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实例中。 感谢
答案 0 :(得分:2)
在CloudService WebRole中使用基于文件的数据库是一个非常糟糕的主意 - 每次部署WebRole时,数据库都会被覆盖。没有简单的方法来保证并发性。也就是说,最好使用Azure Sql或MySql(或者每次部署新代码时都不会被覆盖的任何其他数据库。对于文件存储,BLOB是可以的,但不是动态数据库,大小限制会让你进入麻烦也是。
要访问内容文件夹中的文件,请参阅此SO post。
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");