.NET 4.5 broke my CSLA 4.3 app

.NET 4.5 broke my CSLA 4.3 app

Old forum URL: forums.lhotka.net/forums/t/11538.aspx


lgroup posted on Monday, August 20, 2012

CliffsNotes:

The exception is coming because at some point the Csla.ApplicationContext.User.Identity.Name is getting reset to a different value. (not blank)  This only happens in IIS with .NET 4.5.  It's not happening with the VS dev server on the same box.

In my app I'm setting the Name property to a custom string containing the user's Id, app username, domain username, and email address.  When the exception hits I am only seeing a portion of that string.

I've read a couple messages here about page redirects resetting the Name property and I'm sure there's something going on with that here, but the value is not blank as others have mentioned.

Any ideas why the jump from .NET 4.0 to 4.5 is causing this?  Or why it doesn't happen with the VS web server?   I thought 4.5 was supposed to be backward compatible with 4.0.

 

Thanks,
John 

 

RockfordLhotka replied on Monday, August 20, 2012

You do realize that 4.5 isn't yet in beta - everything available is pre-release preview code. Perhaps you can think of it as alpha code.

This is true for the pre-release on the downloads page, and also if you pull the current code from svn. The current code in svn is a lot different from that earlier pre-release, but has some very real issues with the data portal that I'm in the process of solving.

For the most part (other than on Silverlight) 4.5 will be backward compatible with 4.3. But that won't be true until 4.5 is actually done.

lgroup replied on Monday, August 20, 2012

I was afraid my post was going to be a bit confusing.   By 4.5 I meant .NET 4.5, not CSLA.   I'm still using CSLA 4.3 in my app.   Sorry about that.

John

RockfordLhotka replied on Monday, August 20, 2012

Ahh, sorry, I see now what you are saying.

I don't know the answer, but can provide some info you may find useful in troubleshooting.

Csla.ApplicationContext.User delegates to HttpContext.Current.User in an ASP.NET host if you have Csla.Web.dll referenced in your project (so it is in the \bin folder).

As a side-note, if you don't have Csla.Web.dll in the \bin folder then you'll get incorrect results sometimes - but that's not new to .NET 4.5. The reason is that the default is to pull the principal from System.Threading.Thread.CurrentPrincipal, and that value isn't guaranteed to be consistent starting with ASP.NET 2.0.

If I understand your problem, you are basically finding that HttpContext.Current.User is being changed by IIS and/or ASP.NET 4.5. Perhaps this view on the problem will allow for some better search results or answers via ASP.NET forums or other sources.

lgroup replied on Tuesday, August 21, 2012

Hmmm...  I do have the Csla.Web.dll in the \bin folder.   I'll do some more searching on HttpContext.Current.User and see what that turns up.

Thanks,

John 

Copyright (c) Marimer LLC