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

添加 Trace 语句,以便您可以查看 Azure 中发生的情况。使用以下代码设置 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 回答