将带有CE4数据库的MVC4项目部署到Azure之后->;“错误”;不允许访问数据库文件";关于开放网站

将带有CE4数据库的MVC4项目部署到Azure之后->;“错误”;不允许访问数据库文件";关于开放网站,azure,Azure,我将我的ASP.NET MVC 4 Web项目(SimpleMembershipProvider,EF CF)通过Web角色推送到Microsoft Azure云服务。在我的Web项目中,我使用一个CE4数据库(.sdf)数据库,该数据库位于“App_Data”下 发布过程完成后,我在浏览器中打开我的网站,出现以下错误: 不允许访问数据库文件。[1914,文件名= E:\sitesroot\0\App\u Data\xyzDb.sdf,SeCreateFile] 描述:在执行过程中发生未处理的异

我将我的ASP.NET MVC 4 Web项目(SimpleMembershipProvider,EF CF)通过Web角色推送到Microsoft Azure云服务。在我的Web项目中,我使用一个CE4数据库(.sdf)数据库,该数据库位于“App_Data”下

发布过程完成后,我在浏览器中打开我的网站,出现以下错误:

不允许访问数据库文件。[1914,文件名= E:\sitesroot\0\App\u Data\xyzDb.sdf,SeCreateFile]

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.Data.SqlServerCe.SqlCeException:访问 不允许使用数据库文件。[1914,文件名= E:\sitesroot\0\App\u Data\LivescoreDb.sdf,SeCreateFile]

为了让站点运行,我通过远程桌面连接到azure和musst上的虚拟系统 为“网络服务”帐户提供对“E:\sitesroot\0\App\u Data”文件夹的“访问权限”

My Web.Config连接字符串:

name=“xyzConnection”connectionString=“数据源=|数据目录|\xyzDb.sdf” providerName=“System.Data.SqlServerCe.4.0”

之后,我的网站运行

我有可能改变这种不良行为

例如,我试图更改数据库文件在项目中的位置,但是我找不到将相对路径放入连接字符串的方法

thx

也许这篇文章能帮上忙(见下面)

总的来说,我认为在Azure中使用SQL CE数据库并不是一个能够很好地覆盖所有情况的方案,例如:

  • 如果您最终需要该web角色的多个实例,则每个实例都有自己的数据库副本,因此您的用户可能会看到基于他们访问的实例的不一致行为
  • 如果您在Azure上再次部署/刷新/重新启动应用程序,则无法保证您的App_数据文件夹(或文件系统上的任何文件)中的数据将被保留(更有可能被删除),因此如果您的用户(通过您的应用程序)已将数据输入数据库,你更新了应用程序,他们回来后可能会发现他们所有的工作都丢失了
  • 因此,根据您的用例,您可能会发现您承担了相当大的风险(除非您从未更新过应用程序代码,或者您的应用程序需要一个以上的web角色实例)

    “更好”(在引号中,因为它可以是一个相对的术语,也可以是一个有意义的术语)是用作您的云数据库,您可以在本地进行数据库开发,例如,如果您在本地没有访问任何其他SQL Server版本的权限。这将克服多个web角色的问题(因为您的数据库独立于其中任何一个角色),并且如果您需要重新部署(或类似)到您的web角色,因为数据位于单独的数据存储中


    注意事项:我不确定从SQL CE到另一个SQL版本需要做多少工作,但是似乎有明确的途径,例如,

    感谢Astaykov先生提供的信息。在我将我的网站部署到Azure之前,我已经从LocalDB“降级”到SQLCE。我这样做的背景是,我会为一个网站省钱,也许将来没人会使用这个网站。我的网站更像是一个真正的生产性网站。目前,对于Web和Worker角色实例,我每月有14,40美元的开销。这对于我的privat hobby项目来说已经足够了。另外,我很快会在这里提出另一个问题,即如何在windows Azure中以免费“网站”功能托管我的网站,而不是在“云服务”Azure解决方案下的当前“Web角色”。我已经将其安装为Web角色,因为我需要使用Signal-R,如果我通过执行以下代码行在Azure中将我的站点部署为“普通”“网站”:GlobalHost.dependencySolver.UseWindowsAzureServiceBus(“MySecredConnectionStringToServiceBus”,1);也许我的网站会发展到真正的Produktiv,我会升级到真正的SQL Server。我认为,首先使用实体框架代码,我可以使用表和实现快速创建数据库,并使用脚本复制其中的数据。-->回到我的第一个问题:)哦,我忘了谢谢你的第一个链接。我会很快尝试并给出反馈!我尝试了第一个链接…“AppDomain.CurrentDomain.SetData(“SQLServerCompactEditionUnderWebHosting”,true);”。。。它在部署到Azure时没有帮助。但是谢谢你的支持!