Si je lance une exception non gérée depuis ASP.NET, un avertissement est ajouté au journal des événements (comme prévu).Les messages du journal des événements sont développés lorsque des exceptions non gérées sont gérées par ASP.NET
Mais si le message à l'exception contient un%, le message dans le journal des événements obtient brouillé:
Si le message a été
Could not find foo%20bar
le journal des événements va lire
Could not find foohttp://localhost/testpage.aspxbar
Autre les valeurs numériques après le% seront converties en d'autres chaînes.
Il semble que le message soit passé à travers une instruction printf quelque part en cours de route.
Est-ce par dessin? Y at-il un moyen d'éviter cela (en plus de s'assurer que les exceptions sont traitées)?
EDIT:
Si je regarde le XML en vue de détails dans le journal des événements, je vois:
<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>
Cela ressemble bien. Il semble donc que le problème pourrait être dans l'Observateur d'événements. Quelle est la logique qui convertit les données d'événement XML en données formatées sous Général?
Je l'ai soumis à https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=470598 –
Microsoft a maintenant reconnu le bogue et promis un correctif pour ASP.NET 4.0. –
Excellent! C'est comme ça que ça doit marcher! –