I'm handling exceptions with an HttpModule
in a manner such as this:
int errorCode = 500;
HttpApplication httpApp = (HttpApplication)sender;
try
{
if (httpApp.Server != null)
{
Exception ex;
for (ex = httpApp.Server.GetLastError(); ex != null; ex = ex.InnerException)
{
try
{
HttpException httpEx = ex as HttpException;
if (httpEx != null)
errorCode = httpEx.GetHttpCode();
// ... retrieve appropriate content based on errorCode
}
catch { }
}
}
For HTTP status codes (ex: 302, 404, 503, etc) everything works great. However, for IIS status codes (ex: 401.5, 403.4, etc), can GetHttpCode
retrieve these as its return value is an integer?
You may not be able to. See the second-to-last response here: http://www.velocityreviews.com/forums/t73739-sending-status-as-4011.html. The HTTP RFC doesn't define sub-codes (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html). It looks like it may be an MS only thing - see last response in the first link, which then points to here: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.substatuscode.aspx. While that is how to SET the sub- statuscode, not retrieve it, the interesting thing to me is that it is only supported "with the integrated pipeline mode in IIS 7.0 and at least the .NET Framework version 3.0."
The only other thing I can think of is to look into the HRESULT in the ErrorCode property on the HttpException and see if there's something going on at the bit level where you can figure out the code and sub-code from that.
Don't know if that helps or not.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With