私はASP.NET MVCアプリケーションを持っています。新しい顧客がによって作成された場合、新しいバックグラウンドタスク(HostingEnvironment.QueueBackgroundWorkItemを使用)を実行して、その顧客の新しいAzure SqlDatabaseを作成します。Entity Frameworkデータベースの初期化:新しいAzure SqlDatabaseを初期化するときのタイムアウト
私はEntity Framework Code Firstを使用して新しいデータベースを作成/初期化します。ここでは、コードです:
// My ConnectionString
var con = "...";
// Initialization strategy: create db and execute all Migrations
// MyConfiguration is just a DbMigrationsConfiguration with AutomaticMigrationsEnabled = true
Database.SetInitializer(strategy: new MigrateDatabaseToLatestVersion<CustomerDataContext, MyConfiguration>(useSuppliedContext: true));
using (var context = new CustomerDataContext(con))
{
// Neither 'Connection Timeout=300' in ConnectionString nor this line helps -> TimeoutException will rise after 30-40s
context.Database.CommandTimeout = 300;
// create the db - this lines throws the exception after ~40s
context.Database.Initialize(true);
}
私の問題は、私はいつもおよそ40secs後TimeoutExceptionを得るということです。私はAzureがこの短い時間内に新しいデータベースを初期化できないために起こると思います。私を間違えないでください:データベースはAzureによってうまく作成されますが、その時点で待つ/ タイムアウト例外を取り除きたいです。
EDIT1: 私は私のConnectionStringで= 300接続タイムアウトを使用していますが、私のアプリは本当に気にしません。約40秒後、私は常にSqlErrorを実行しています。
EDIT2: SqlExceptionがで発生させた例外。 メッセージ:タイムアウトが切れています。操作が完了する前にタイムアウト時間が経過したか、サーバーが応答していません。 出典:.NET SqlClientデータプロバイダ
EDIT3: 私は、これはASP.NET/IISとは何の関係もないことになりましconfimことができます。単純なUnitTestメソッドであっても、上記のコードは失敗します。
あなたは、完全なエラーメッセージが表示されて、あなたが見ている実際の例外を共有することはできますか?どうも! –
私は例外を追加しました。ありがとう。 – mmmato
マイグレーション設定クラスにCommandTimeoutプロパティもあります。設定することはできますか? https://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigrationsconfiguration.commandtimeout(v=vs.113).aspx –