Вот моя попытка сделать объект самосвал:Использование отражения по запросу врезается w3wp.exe процесс
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
namespace Inspector
{
public static class Inspector
{
public static string Inspect(this object o)
{
StringBuilder sb = new StringBuilder();
InspectObject(o, sb);
return sb.ToString();
}
private static void InspectObject(object o, StringBuilder sb)
{
Type objType = o.GetType();
if (objType == typeof(string))
sb.Append(o.ToString());
else
{
try
{
IList<PropertyInfo> props = new List<PropertyInfo>(objType.GetProperties());
foreach (PropertyInfo prop in props)
{
object propValue = null;
ParameterInfo[] ip = prop.GetIndexParameters();
if (ip.Length == 0)
{
propValue = prop.GetValue(o, null);
InspectObject(propValue, sb);
}
else
{
}
}
}
catch (Exception ex)
{
sb.Append(string.Format("Exception: {0}", ex.Message));
}
}
}
}
}
Когда я использую его, чтобы проверить Request
(Request.Inspect()
) в методе Index HomeController в аварии, w3wp.exe процесса и блок try-catch не выполняет свою работу.
Что на самом деле происходит? Microsoft говорит, что только необработанные исключения crash w3wp.exe, но я вызываю Request.Inspect()
, завернутый в родительский блок try-catch;
Обратите внимание, что StackOverflow (который является общим результатом рекурсии) убивает процесс и не может быть пойман ... –