簡體   English   中英

使用SQL數據庫將MVC 4部署到Azure網站

[英]Deploying MVC 4 to Azure Web Site with SQL db

我剛剛從ASP.NET MVC 4 Internet應用程序模板部署了我的第一個Azure網站。 該應用程序在我的本地計算機上運行良好。 我按照此處找到的教程來部署網站:

http://www.windowsazure.com/en-us/develop/net/tutorials/web-site-with-sql-database/

部署網站后,我可以進入網站主頁,我的家庭控制器不需要身份驗證。 當我嘗試登錄時,我被定向到錯誤頁面。

我修改了web.config文件以獲取自定義錯誤消息,並且收到以下消息:

數據庫中已經有一個名為“ UserProfile”的對象。

說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。

異常詳細信息:System.Data.SqlClient.SqlException:數據庫中已經存在一個名為“ UserProfile”的對象。

源錯誤:

當前Web請求的執行期間生成了未處理的異常。 可以使用下面的異常堆棧跟蹤來標識有關異常的來源和位置的信息。

堆棧跟蹤:

[SqlException(0x80131904):數據庫中已經有一個名為“ UserProfile”的對象。] System.Data.SqlClient.SqlConnection.OnError(SqlException異常,布爾值breakConnection,操作1 wrapCloseInAction) +1753346 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction)+5295154 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布爾調用程序HasConnectionLock,布爾asyncClose)+242 System.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavid, ,數據流SqlDataReader的,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,布爾邏輯dataReady)1682個System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串方法名,布爾異步,的Int32超時)280 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +405 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +160 System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) +125 System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable 1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +405 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +160 System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) +125 System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable 1 migrationStatements)+ 113 System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(字符串migrationId,XDocument targetModel,IEnumerable 1 operations, Boolean downgrading, Boolean auto) +672 System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration) +267 System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable 1待處理遷移,字符串targetMigrationId,字符串lastMigrationId)+133 System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)+455 System.Data.Entity.MigrateDatabaseToLatestVersion 2.InitializeDatabase(TContext context) +62 System.Data.Entity.<>c__DisplayClass2 1.b_0 (DbContext c)+70 System.Data.Entity.Internal。<> c _DisplayClass8.b_ 6()+19 System.Data。實體 .Internal.InternalContext.PerformInitializationAction(動作)+60 System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()+181 System.Data.Entity.Internal.LazyInternalContext.b _4(InternalContext c)+7 System.Data.Entity .Internal.RetryAction 1.PerformAction(TInput input) +110 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1動作)+185 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()+73 System.Data。 Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(類型EntityType)+28 System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +52 System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext()+15系統.Data.Entity.Internal.Linq.InternalSet 1.Find(Object[] keyValues) +23 EnergyToolbase.Controllers.AccountController.Login(LoginModel model, String returnUrl) +94 lambda_method(Closure , ControllerBase , Object[] ) +147 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 1.Find(Object[] keyValues) +23 EnergyToolbase.Controllers.AccountController.Login(LoginModel model, String returnUrl) +94 lambda_method(Closure , ControllerBase , Object[] ) +147 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2參數)+182 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext,ActionDescriptor actionDescriptor,IDictionary 2 parameters) +27 System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +28 System.Web.Mvc.Async.<>c__DisplayClass8 1.b__7(IAsyncResult )+10 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +50 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +58 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +225 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +225 System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +50 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +58 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +225 System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +225 System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult 1.End()+50 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)+34 System.Web.Mvc.Async。<> c _DisplayClass2a.b_ 20( )+24 System.Web.Mvc.Async。<> c _DisplayClass25.b_ 22(IAsyncResult asyncResult)+99 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +50 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult 1.End()+55 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+39 System.Web.Mvc.Async。<> c _DisplayClass4.b__3(IAsyncResult ar)+23 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +55 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult 1.End() +55 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25 System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23 System.Web.Mvc.Async.WrappedAsyncResult 1.End()+55 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+31 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)+ 9 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 9629708 System.Web.HttpApplication.ExecuteStep(IExecutionStep步驟,布爾值且已完成)+155

有人可以指出幫助我在這里找到問題。

看起來像System.Data.Entity.Migrations.DbMigrator.ApplyMigration正在拋出。 聽起來您已經設置了實體框架,以通過已有的遷移將某些內容插入數據庫(在本例中為userprofile

我要確保您針對正確的數據庫進行部署。 然后檢查是否已經在數據庫中創建了所需的對象,並相應地對遷移進行了故障排除( 或刪除數據庫中的所有對象,然后重試,因為您似乎希望此部署的數據庫干凈。

我有一個類似的問題。 我的問題是我用emailid,phone等擴展了userprofile表,並將其保存在數據上下文中。 當我為其創建遷移時,它為用戶配置文件表創建了遷移。 雖然默認的成員資格安全代碼已經在應用程序啟動時創建了用戶配置文件,角色和其他表,但是當它嘗試運行我的遷移(這意味着它試圖重新創建用戶配置文件表)時,它抱怨“已經有一個名為'UserProfile的對象在數據庫中。”

我的解決方案是從遷移中手動刪除用戶配置文件表,然后通過sql服務器中的alter table查詢顯式添加我需要的其他列。

由於我的數據模型已經在UserProfile表中包含這些列,因此運行良好。 希望這可以幫助其他人節省時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM