I think you can make an event in your inner layers and use them in outer layers, for example you can have an public event like ErrorNotify,
//do some other stuff
//execute the event(call its method)
//and send the exception inside your own EventArgs
then in your ASP.NET layer(the next layer) you can use this event like
//then in your ErrorOccured method you can
//redirect users to ErrorPage.aspx
also you can make your own EventArgs and ErrorNotifyHandller delegate in another assembly then in your ASP.NET page you would receive your ownEvenetArgs as a parameter of your ErrorNotifyHandller delegate.