0

そのため、Azureにデプロイするときにデータベーステーブルが作成されなかった理由を何時間も理解した後(mvc4コードの最初のエンティティフレームワークを使用)、最終的にバックエンドのセットアップ方法がわかりました。汎用リポジトリ、作業単位、データコンテキストなどがあります(これは問題を引き起こしていません)。データテーブル(500サーバーエラー)が作成されない原因は、UnitOfWorkFilterです。これを適用すると機能しませんが、取り除くと機能します。だから私の質問は、これが問題を引き起こしている理由と、フィルターを使い続けたいので、この問題を修正するために私ができることを誰かが知っているかどうかです。

これが私の作業単位フィルターです。

    public class UnitOfWorkFilter : System.Web.Mvc.ActionFilterAttribute
    {

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var unitOfWork = DependencyResolver.Current.GetService<IUnitOfWork>();

        unitOfWork.Begin();
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var unitOfWork = DependencyResolver.Current.GetService<IUnitOfWork>();
        if (filterContext.Exception != null)
        {
            unitOfWork.Rollback();
            return;
        }
        try
        {
            unitOfWork.Commit();
        }
        catch
        {
            unitOfWork.Rollback();
            throw;
        }
        finally
        {
            unitOfWork.Dispose();
        }
    }
}
}
4

1 に答える 1

1

Azure で何が起こっているかを確認できるように、Trace ステートメントを追加します。次のコードを使用して Trace を設定します。

private void ConfigDiagnostics()
{
    DiagnosticMonitorConfiguration config = 
        DiagnosticMonitor.GetDefaultInitialConfiguration();
    config.ConfigurationChangePollInterval = TimeSpan.FromMinutes(1d);
    config.Logs.BufferQuotaInMB = 500;
    config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
    config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1d);

    DiagnosticMonitor.Start(
        "Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", 
        config);
}
于 2012-10-22T06:34:50.317 に答える