Nie opróżniaj sesji po wystąpieniu wyjątku - NHibernate

Zajmuję się tworzeniem aplikacji internetowej ASP.NET MVC w wersji .NET 3.5, NHibernate i hostowanej na Windows Azure. Kiedy aplikacja internetowa jest uruchamiana z lokalnej struktury programistycznej, działa poprawnie. Jednak po przeniesieniu go do systemu Windows Azure każda wstawka wykonana z roli internetowej MVC kończy się wyjątkiem wymienionym poniżej.

Jakiś pomysł, co jest nie tak z moją logiką NHibernate? (może być zarządzanie sesją, nie jestem pewien)

[AssertionFailure: null id w pozycji Lokad.Translate.Entities.User (nie opróżniaj sesji po wystąpieniu wyjątku)] NHibernate.Event.Default.DefaultFlushEntityEventListener.CheckId (Object obj, IEntityPersister persister, Object id, EntityMode entityMode) + 292 NHibernate.Event.Default.DefaultFlushEntityEventListener.GetValues ​​(Obiekt obiektu, pozycja EntityEntry, EntityMode entityMode, Boolean couldBeDirty, sesja ISessionImplementor) +93 NHibernate.Event.Default.DefaultFlushEntityEventListener.OnFlushEntity (zdarzenie FlushEntityEvent) +158 NHibernate.Event.Default.AbstractFlushingEventListener .FlushEntities (zdarzenie FlushEvent) +469 NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions (zdarzenie FlushEvent) +339 NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (zdarzenie FlushEvent) +85 NHibernate.Impl.SessionImpl.Flush () +275 NHibernate.Impl.SessionImpl.Flush () +275 NHibernate .Transaction.AdoTransaction.Commit () +236 Lokad.Translate.Repositories.PageRepository.Create (Strona strony) Lokad.Translate.Controll ers.PagesController.Create (strona strony) lambda_method (ExecutionScope, ControllerBase, Object []) +69 System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary2 parameters) +251 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 parametry) +31 System.Web.Mvc. <> C__DisplayClassa.b__7 () +88 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (filtr IActionFilter, ActionExecutingContext preContext, Func1 continuation) +534 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 filtry, ActionDescriptor actionDescriptor, parametry IDictionary`2) +312 System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName) +856 System.Web.Mvc.Controller.ExecuteCore () +185 System.Web.Mvc. MvcHandler.ProcessRequest (HttpContextBase httpContext) +221 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +586 System.Web.HttpApplication.ExecuteStep (krok IExecutionStep, Boolean & completedSynchronically) +177

Zauważ, że używam_session.FlushMode = FlushMode.Commit; i żeUser jest używany w zwyczajuRoleProvider

public class SimpleRoleProvider : RoleProvider 
{
    readonly UserRepository Users = new UserRepository();

    public override string[] GetRolesForUser(string username)
    {
        try
        {
            var user = Users.Get(username);

            // no role if user is not registered
            if (null == user) return new string[0];

            // default role for registered user
            return user.IsManager ? new[] { "Manager", "User" } : new[] { "User" };
        }
        catch (Exception)
        {
            // role should not fail in case of DB issue.
            return new string[0];
        }
    }
}

questionAnswers(3)

yourAnswerToTheQuestion