2

最初のAzureWebサイトをASP.NETMVC4インターネットアプリケーションテンプレートから展開しました。アプリケーションは私のローカルコンピューターでうまく機能しました。ここにあるチュートリアルに従って、Webサイトを展開しました。

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

サイトを展開した後、Webサイトのホームページに移動できます。ホームコントローラーは認証を必要としません。ログインしようとすると、エラーページが表示されます。

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, Action1 wrapCloseInAction)+5295154System.Data.SqlClient.TdsParser。 ThrowExceptionAndWarning(TdsParserStateObject stateObj、Boolean callerHasConnectionLock、Boolean asyncClose)+242 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet BulkCopyHandler、TdsParserStateObject stateObj .RunExecuteNonQueryTds(String methodName、Boolean async、Int32 timeout)+280 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 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(IEnumerable1回の移行ステートメント)+113 System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(文字列の移行Id、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(IEnumerable1の保留中の移行、文字列targetMigrationId、文字列lastMigrationId)+133 System.Data.Entity.Migrations.DbMigrator.Update(文字列targetMigration) +455 System.Data.Entity.MigrateDatabaseToLatestVersion 2.InitializeDatabase(TContext context) +62 System.Data.Entity.<>c__DisplayClass21.b_ 0(DbContext c)+70System.Data.Entity.Internal。<>c _DisplayClass8.b_ 6()+19 System.Data.Entity.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.RetryAction1.PerformAction(TInput input) +110 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action1アクション)+185 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()+73 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)+28System.Data.Entity.Internal.Linq.InternalSet1 1.Initialize() +52 System.Data.Entity.Internal.Linq.InternalSet。 get_InternalContext()+15 System.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, IDictionary2パラメータ)+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__DisplayClass81.b__7(IAsyncResult )+10System.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.WrappedAsyncResult1.End()+50 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)+34System.Web.Mvc.Async。<>c _DisplayClass2a.b_20()+24System.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.WrappedAsyncResult1.End()+55System.Web.Mvc.Controller。 EndExecuteCore(IAsyncResult asyncResult)+39System.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.WrappedAsyncResult1.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システム。 Web.HttpApplication.ExecuteStep(IExecutionStep step、Boolean&completedSynchronously)+155

誰かが私がここで問題を見つけるのを手伝ってくれるように指摘してもらえますか?

4

2 に答える 2

1

System.Data.Entity.Migrations.DbMigrator.ApplyMigrationがスローされているようです。すでに存在する移行(この場合はuserprofile)を介してデータベースに何かを挿入するようにエンティティフレームワークが設定されているようです。

正しいデータベースに対してデプロイしていることを確認してください。次に、データベースに必要なオブジェクトがすでに作成されているかどうかを確認し、それに応じて移行のトラブルシューティングを行います(または、データベース内のすべてのオブジェクトを削除して、この展開でクリーンなデータベースを期待しているように見えるため、再試行してください) 。

于 2013-03-04T02:16:45.773 に答える
0

同様の問題がありました。私の問題は、userprofileテーブルをemailid、phoneなどで拡張し、データコンテキストに配置したことでした。移行を作成すると、ユーザープロファイルテーブルの移行が作成されました。デフォルトのメンバーシップセキュリティコードは、アプリケーションの起動時にユーザープロファイル、ロール、およびその他のテーブルを既に作成していますが、移行を実行しようとすると(つまり、ユーザープロファイルテーブルを再作成しようとしました)、「'UserProfileという名前のオブジェクトが既に存在します。 'データベース内。」

私の解決策は、移行からユーザープロファイルテーブルを手動で削除してから、SQLサーバーのテーブルクエリを変更して明示的に必要な他の列を追加することでした。

私のデータモデルはすでにUserProfileテーブルのこれらの列を予期していたため、正常に実行されました。これが他の誰かの時間を節約するのに役立つことを願っています。

于 2014-10-04T09:15:06.703 に答える