Ich entwickle eine ASP.NET MVC-Webanwendung unter .NET 3.5, NHibernate und gehostet auf Windows Azure. Wenn die Webanwendung von der lokalen Entwicklungsumgebung ausgeführt wird, funktioniert sie einwandfrei. Wenn ich es jedoch nach Windows Azure verschiebe, endet jede von der MVC-Webrolle durchgeführte Einfügung mit der unten aufgeführten Ausnahme.Spülen Sie die Sitzung nicht, nachdem eine Ausnahme auftritt - NHibernate
Irgendeine Idee, was ist los mit meiner NHibernate Logik? (Könnte das Session-Management, nicht sicher)
[AssertionFailure: null id in Lokad.Translate.Entities.User Eintrag (nicht die Session spülen, nachdem eine Ausnahme auftritt)] NHibernate.Event.Default. DefaultFlushEntityEventListener.CheckId (Object obj, IEntityPersister persister, Objekt-ID, EntityMode entityMode) +292 NHibernate.Event.Default.DefaultFlushEntityEventListener.GetValues (Object Einheit, EntityEntry Eintrag, EntityMode entityMode, Boolean mightBeDirty, ISessionImplementor Sitzung) +93 NHibernate.Event .Default.DefaultFlushEntityEventListener.OnFlushEntity (FlushEntityEvent-Ereignis) +158 NHibernate.Event.Default.AbstractFlushingEventListener.FlushEntities (FlushEvent-Ereignis) +469 NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions (FlushEvent Ereignis) +339 NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (FlushEvent Ereignis) +85 NHibernate.Impl.SessionImpl.Flush() +275 NHibernate.Transaction.AdoTransaction .Commit() +236 Lokad.Translate.Repositories.PageRepository.Create (Seite Seite) Lokad.Translate.Controllers.PagesController.Create (Seite Seite) lambda_method (ExecutionScope, Controller, Object []) +69 -System. Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary
2 parameters) +251 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 Parameter) +31 System.Web.Mvc. <> c__DisplayClassa.b__7() +88 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter Filter, ActionExecutingContext Vorkontext, Func1 continuation) +534 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
1 Filter, ActionDescriptor actionDescriptor, IDictionary`2 Parameter) +312 System.Web.Mvc.ControllerActionInvoker. InvokeAction (Controllercontroller, String action) +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 (IExecutionStep-Schritt, Boolean & completedSynchronously) +177
Bitte beachte, dass ich _session.FlushMode = FlushMode.Commit;
verwende und dass die User
in einem benutzerdefinierten verwendet wird RoleProvider
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];
}
}
}
Hallo Stefan, vielen Dank für Ihre ausführliche Erklärung. Ich habe endlich eine Lösung gefunden. Das Problem hat nichts mit Ihrer Erklärung zu tun, aber trotzdem ist es ein großartiger Punkt. –
Vielen Dank für so detaillierte Erklärung Ich hatte den gleichen Fehler und es wurde durch Schlucken NHibernate Ausnahme verursacht. Ich habe viel Zeit gespart, indem ich deinen Beitrag gelesen habe. – Vladimirs