Não libere a sessão após uma exceção ocorrer - NHibernate

Estou desenvolvendo um aplicativo da Web ASP.NET MVC no .NET 3.5, NHibernate e hospedado no Windows Azure. Quando o webapp é executado a partir da estrutura de desenvolvimento local, ele funciona bem. No entanto, quando eu o movo para o Windows Azure, todas as inserções executadas a partir da função da web do MVC acabam com a exceção listada abaixo.

Alguma idéia do que está errado com a minha lógica do NHibernate? (pode ser o gerenciamento de sessão, não tenho certeza)

[AssertionFailure: id de null na entrada Lokad.Translate.Entities.User (não libere a Session após uma exceção ocorrer)] NHibernate.Event.Default.DefaultFlushEntityEventListener.CheckId (objeto obj, IEntityPersister persister, id do objeto, EntityMode entityMode) + 292 NHibernate.Event.Default.DefaultFlushEntityEventListener.GetValues ​​(Entidade de objeto, entrada EntityEntry, EntityMode entityMode, Boolean mightBeDirty, sessão ISessionImplementor) +93 NHibernate.Event.Default.DefaultFlushEntityEventListener.OnFlushEntity (evento FlushEntityEvent) +158 NHibernate.Event.Default.AbstractFlushingEventListener .FlushEntities (evento FlushEvent) +469 NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions (evento FlushEvent) +339 NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (evento FlushEvent) +85 NHibernate.Impl.SessionImpl.Flush () +275 NHibernate .Transaction.AdoTransaction.Commit () +236 Lokad.Translate.Repositories.PageRepository.Create (Página da página) Lokad.Translate.Controll ers.PagesController.Create (Página da página) 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 parâmetros) +31 System.Web.Mvc. <> C__DisplayClassa.b__7 () + 88 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (filtro IActionFilter, ActionExecutingContext preContext, Func1 continuation) +534 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 filtros, ActionDescriptor actionDescriptor, IDictionary`2 parâmetros) +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 (etapa IExecutionStep, Booleana e concluída de forma assíncrona) +177

Note que estou usando_session.FlushMode = FlushMode.Commit; e que oUser é usado em um costumeRoleProvider

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