DAL exception always leads to System.OutOfMemoryExcetion in Silverlight

DAL exception always leads to System.OutOfMemoryExcetion in Silverlight

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

keithv posted on Thursday, July 03, 2014


I have a silverlight application that is in a stable (production) state running Csla 4.5.40. I am using the Factory Implementation (ObjectFactory).

I needed to make some changes today so I updated all NuGet packages on the application and all of it's libraries. This upgraded the application to 4.5.600. I only made one code change to handle DataPortalException.ErrorInfo is now HttpErrorInfo instead of WCFErrorInfo. This change isn't impacting my issue as a DataPortalException is never received.

After updating the NuGet packages however if there is an exception (any exception) in the DAL leads to the following exception in Silverlight:

Property load or set failed for property Message (Exception of type 'System.OutOfMemoryException' was thrown.)   at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
   at Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
   at Microsoft.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Csla.DataPortal`1.<BeginFetch>d__1e.MoveNext()

I cannot figure out the cause. Even doing "throw new Exception("Test");" immediatly in the DAL fetch method leads to this. None of my code runs between exception being raised in the DAL and receiving the above exception in Silverlight. I am stumped. If there is a DAL exception in the version running Csla 4.5.40 I get a  DataPortalException object as expected.

Thank you for your help.

keithv replied on Monday, July 07, 2014

Reverting back to v4.5.501 with no changes to our applications fixed the issue.

Igor Deinekin replied on Friday, July 18, 2014

There is a bug in a new 4.5.600 version of CSLA. It is placed in the Source\Csla\Server\Hosts\HttpChannel\HttpErrorInfo.cs. There is a while statement in the constructor that turns into an endless loop when there is at least one InnerException in the WcfErrorInfo object received as a parameter.

We solved our problem by rebuilding Csla.dll with the HttpErrorInfo fixed.

Copyright (c) Marimer LLC