Есть ли лучший способ сделать это, чем проверить строку исключения?
Я бы предпочел, чтобы эта общая ошибка была обработана на странице, но для исключений SOAP (вызовов веб-служб) мне нужно регистрировать детали фактического исключения, которое произошло на сервере, а не на клиенте.
Свойство ".Detail.InnerText" не является универсальным исключением и может быть получено только после приведения универсального исключения к исключению SOAP.
<code> protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Context.Server.GetLastError();
if (ex.GetType().FullName == "System.Web.Services.Protocols.SoapException")
{
System.Web.Services.Protocols.SoapException realException = (System.Web.Services.Protocols.SoapException)ex;
Response.Clear();
Response.Output.Write(@"<div style='color:maroon; border:solid 1px maroon;'><pre>{0}
", realException.Detail.InnerText);
Response.Output.Write ("
", ex.Message, ex.StackTrace);
Context.ClearError ();
Response.End ();
}
}
Я думаю, что есть способ получить тип базового исключения без использования сравнения строк ...
Заранее спасибо.