在ASP.net MVC 5 WebRole中,我使用MaxMind地理IP数据库,其API使用如下字符串:
var reader = new DatabaseReader (@"C:UsersUserSourceWorkspacesmyprojectContentsdb.mmdb");
它需要一个完整的物理路径,相对路径不起作用。问题是:在云中部署WebRole,我如何检索数据库?
在实例中通过远程连接输入,我可以看到文件在那里,路径是:
var reader = new DatabaseReader(@"E:sitesroot Contentsdb.mmdb");
但这不起作用,我有一个例外无法找到文件'E:sitesroot Contentsdb.mmdb'.
我该怎么办?我应该使用BLOB吗?数据库需要快速访问,因为它每天可能被调用数亿次,我不知道BLOB是否可以支持这些数量的同时连接,所以我更喜欢将它放在VM实例中。由于
在CloudService WebRole中使用基于文件的DB是一个非常糟糕的主意——每次你部署WebRole时,DB都会被覆盖。没有简单的方法来保证并发性。也就是说,最好使用Azure Sql或MySql(或任何其他不会在每次部署新代码时被覆盖的数据库)。BLOB可以用于文件存储,但不能用于动态db,而且大小限制也会给您带来麻烦。
要访问contents文件夹中的文件,请参阅这篇文章。
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Contents");