try { } catch(Exception unhandled) { // serve friendly message here to user }
block.
В моем текущем случае одна из включенных таблиц стилей дублирует существующую функцию шаблона. Теперь я понимаю, что это может привести к поломке, но почему я не могу обработать это исключение в своем коде C#?
Вот точная ошибка, которую я получаю, когда подключаю отладчик при w3wp Необработанное исключение .exe отлаживается локально. Я также приложил пару скриншотов.

< img alt="Обнаружено необработанное исключение" src="
" />System.Xml.Xsl.XslLoadException
HResult=0x80131942
Message='helper.name' is a duplicate template name.
Source=FLX
StackTrace:
at ProjectFlx.FlxTemplater.LoadTransformation(XslCompiledTransform xslt) in D:\GitHub\ProjFlx\Src\TMPLTSite\WebTemplater.cs:line 475
at ProjectFlx.FlxTemplater.c__DisplayClass38_0.
b__0() in D:\GitHub\ProjFlx\Src\TMPLTSite\WebTemplater.cs:line 429
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
This exception was originally thrown at this call stack:
[External Code]
ProjectFlx.FlxTemplater.LoadTransformation(System.Xml.Xsl.XslCompiledTransform) in WebTemplater.cs
ProjectFlx.FlxTemplater.ProcessTemplate.AnonymousMethod__0() in WebTemplater.cs
[External Code]
[1]:

[2]:

Процедура вызова
ПРИМЕЧАНИЕ. Из-за сложности и размера моих Xml и Xsl мне необходимо увеличить стек. размер для трансформации. Отсюда и анонимный звонок.
try
{
var xslt = new XslCompiledTransform();
//xslt = LoadTransformation(xslt);
System.Threading.Thread t = new System.Threading.Thread(() => xslt = LoadTransformation(xslt), 8 * 1024 * 1024);
t.Start();
t.Join();
XsltArgumentList xsltparms = DicToXsltParms();
using (var mem = new MemoryStream())
{
_xml.Save(mem);
mem.Flush();
mem.Seek(0, SeekOrigin.Begin);
var readersettings = new XmlReaderSettings();
var reader = XmlReader.Create(mem, readersettings);
using (_writer = new StringWriter())
{
xslt.Transform(reader, xsltparms, _writer);
}
}
}
catch(System.Xml.Xsl.XsltCompileException handled)
{
System.Diagnostics.Debug.WriteLine("Caught XsltCompileException");
System.Diagnostics.Debug.WriteLine(handled.Message);
}
//catch(System.Xml.Xsl.XslLoadException handled)
//{
//}
catch (Exception unhandled)
{
var ex = new Exception("Failed to Transform xml/xslt", unhandled);
ex.Source = "ProjectFlx.FlxTemplater.ProcessTemplate";
throw ex;
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... breaks-iis
Мобильная версия