Wenn ich eine nicht behandelte Ausnahme aus ASP.NET ausspreche, wird (wie erwartet) eine Warnung zum Ereignisprotokoll hinzugefügt.Ereignisprotokollmeldungen werden erweitert, wenn nicht behandelte Ausnahmen von ASP.NET verarbeitet werden.
Aber wenn die Nachricht in der Ausnahme einer% enthält, wird die Nachricht in der eventlog verstümmelt:
Wenn die Nachricht
Could not find foo%20bar
der eventlog
Could not find foohttp://localhost/testpage.aspxbar
Andere werden gelesen wurde numerische Werte nach dem% werden in andere Zeichenfolgen konvertiert.
Es sieht so aus, als würde die Nachricht irgendwo auf dem Weg durch eine printf-Anweisung weitergeleitet.
Ist dies pro Design? Gibt es eine Möglichkeit, dies zu vermeiden (abgesehen davon, dass Ausnahmen behandelt werden)?
EDIT:
Wenn ich an der XML-Ansicht unter Details im eventlog sehen, ich sehe:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="ASP.NET 2.0.50727.0" />
<EventID Qualifiers="32768">1309</EventID>
<Level>3</Level>
<Task>3</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2009-06-26T11:10:09.000Z" />
<EventRecordID>130253</EventRecordID>
<Channel>Application</Channel>
<Computer>XXX</Computer>
<Security />
</System>
<EventData>
<Data>3005</Data>
<Data>An unhandled exception has occurred.</Data>
<Data>26-06-2009 13:10:09</Data>
<Data>26-06-2009 11:10:09</Data>
<Data>525e4e8df6ec432d9a9b9b77e9ded580</Data>
<Data>6</Data>
<Data>1</Data>
<Data>0</Data>
<Data>ecd2c9a5-1-128904882075773124</Data>
<Data>Full</Data>
<Data>/WebSite1</Data>
<Data>C:\Users\XXX\Documents\Visual Studio 2008\WebSites\WebSite1\</Data>
<Data>XXX</Data>
<Data />
<Data>6404</Data>
<Data>WebDev.WebServer.EXE</Data>
<Data>XXX</Data>
<Data>Exception</Data>
<Data>Foo%20Bar</Data>
<Data>http://localhost:6594/WebSite1/Default.aspx</Data>
<Data>/WebSite1/Default.aspx</Data>
<Data>127.0.0.1</Data>
<Data>XXX</Data>
<Data>True</Data>
<Data>NTLM</Data>
<Data>XXX</Data>
<Data>4</Data>
<Data>XXX</Data>
<Data>False</Data>
<Data>at _Default.Page_Load(Object sender, EventArgs e) at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)</Data>
</EventData>
</Event>
Das sieht gut aus. Es sieht so aus, als ob das Problem in der Ereignisanzeige liegt. Welche Logik konvertiert die XML-Ereignisdaten in die formatierten Daten unter Allgemein?
Ich habe es auf https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=470598 –
Microsoft haben jetzt den Fehler bestätigt und eine Korrektur für ASP.NET 4.0 versprochen. –
Ausgezeichnet! So soll es funktionieren! –