Hi Rocky,
I wish to be able to take the innerexception of a DataPortalException and use the Microsoft Exception Handling Block to replace the exception and pass to client.
Ultimate goal is to strip off the DataPortalException at the Silverlight end and have all the obtuse exceptions server side to be converted to a user friendly one.
Initially I was hoping to override
protected virtual void DataPortal_OnDataPortalException(DataPortalEventArgs e, Exception ex)
However the calling code
catch (Exception ex)
{
try
{
if (target != null)
target.DataPortal_OnDataPortalException(
new DataPortalEventArgs(context, objectType, operation), ex);
else
lb.CallMethodIfImplemented(
"DataPortal_OnDataPortalException",
new DataPortalEventArgs(context, objectType, operation), ex);
}
catch
{
// ignore exceptions from the exception handler
}
throw new DataPortalException(
"DataPortal.Update " + Resources.FailedOnServer,
ex, new DataPortalResult(obj));
}
ignores exceptions being thrown from the handler and also does not allow me to set ex.
Would it be appropriate to make ex a ref parameter allowing this functionality otherwise have you got any suggestions on how I can achieve this.
Many Thanks
Jeremy
Are you asking about the issue reported here:
http://www.lhotka.net/cslabugs/edit_bug.aspx?id=679
Right now it is not possible to alter the exception as it flows back to the client. I hope to rework the pipeline model of the data portal in CSLA 4 to enable that scenario, but I don't know if I'll have time or not at this point...
Thanks Rocky,
The link you sent for the feature request is correct.
I altered CSLA so that the ex parameter is now a ref and it currently performs as I expect but obviously will take a refactoring hit when we upgrade CSLA in the future.
Thanks again
Jeremy
Copyright (c) Marimer LLC