【问题标题】:How to handle missing ASP Membership Database for Deployment/Checkout?如何处理缺少的 ASP 成员资格数据库以进行部署/结帐?
【发布时间】:2012-03-25 03:11:55
【问题描述】:
我有一个使用 SQL Server 2012 LocalDB 的 ASP MVC 3 应用程序。我没有将成员数据库 aspnetdb.mdf 提交到源代码控制 (Mercurial),所以当我签出或将项目部署到新计算机时,我收到以下错误:
找不到存储过程“dbo.aspnet_CheckSchemaVersion”。
我不希望在每台机器上都运行 aspnet_regsql。有没有办法可以从 Global.asax 中的代码重新创建丢失的会员数据库?如果做不到这一点,将 aspnet_regsql 创建的初始数据库(.mdf 或脚本到 .sql)提交到源代码管理并将其部署到所有机器上是否安全?
【问题讨论】:
标签:
asp.net-mvc-3
asp.net-membership
【解决方案1】:
似乎无法从 .NET 中创建它,所以我最终只创建了默认的会员数据库:
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe" -E -S (localdb)\v11.0 -d aspnetdb -A mr
这将在C:\Users\USERNAME 中创建aspnetdb.mdf。然后,我将其复制到解决方案中的部署文件夹中,并将其添加到版本控制中。最后一步是向我的 web 项目添加一个构建事件,如果数据库不存在,它将复制数据库。
if not exist ("$(ProjectDir)App_Data\aspnetdb.mdf") copy "$(SolutionDir)_Deployment\aspnetdb.mdf" "$(ProjectDir)App_Data"