lost+found: Regex.Escape() & SharePoint Fehlersuche

C# – RegEx.Escape-Methode geizt mit Escapezeichen
Möchte man in Regular Expressions zu berücksichtigende Zeichen als Metazeichen ausschließen, so ist der Einsatz von Escapezeichen gebräuchlich.
Hat man vor, diese Zeichen aus Eingabefeldern oder Konfigurationsdateien zu verwenden, ist es selten sinnvoll sich selbst um deren korrekten Ausschluss als Metazeichen zu kümmern oder es dem Anwender zu überlassen. Genau für diesen Zweck stellt das .NET-Framework, genauer gesagt die Klasse Regex (System.Text.RegularExpressions), die Methode Escape() zur Verfügung.
Damit jedoch eine evtl. diese Zeichen einschließende, größere Regular Expression danach noch funktioniert, sollte man dringend das Kleingedruckte lesen:
Versieht einen minimalen Satz von Zeichen (\, *, +, ?, |, {, [, (,), ^, $,., # und Leerraum) mit Escapezeichen, indem diese durch die jeweils entsprechende Escapesequenz ersetzt werden.

Schließende Klammern z.B. fehlen hier. Fügt man die via Escape() vermeintlich vollständig und korrekt verarbeiteten Zeichen in eine Gruppe ein und sei eine schließende Klammer enthalten, so wird im ungünstigsten Fall unbeabsichtigt die Gruppe vorschnell geschlossen und folgende Zeichen führen dazu, dass der Ausdruck nicht mehr funktioniert wie geplant.

SharePoint 2010 – Fehlersuche ohne 14-Hive
Wenn bei der Arbeit mit einem SharePoint-System Fehler auftreten, erhält man meist eine Korrelations-Nummer (Correlation-ID), mit der man sich daraufhin auf die Suche nach der Ursache machen kann. Geeignet um mit der Suche zu beginnen, ist nicht selten der Ort, an welchem die Laufzeit-Protokolle hinterlegt werden: der 14-Hive und das Log-Verzeichnis (C:\ProgramFiles\Microsoft Office Servers\14.0\Logs), in welchem sich zahlreiche Log-Dateien finden.

Die Suche nach der besagten Correlation-ID oder anderen Fehlermerkmalen kann man sich jedoch mit der PowerShell noch etwas vereinfachen, verwendet man Get-SPLogEvent an der SharePoint 2010 Management Shell:
Get-SPLogEvent | ?{$_.Correlation -eq "26f73116-3241-a33c-b139-ff13f3176b28"}
…liefert…
Timestamp   Area                      Category                  EventID  Level      Message
---------   ----                      --------                  -------  -----      -------                           
11:00:58.32 SharePoint Foundation     Logging Correlation Data  xmnv     Medium     Name=Request (POST:https://proje...
11:00:58.32 SharePoint Foundation     Logging Correlation Data  xmnv     Medium     Site=/                            
11:00:58.72 SharePoint Foundation     SPRequest                 90im     High       Failed to cache schema for 4-00B...
11:00:58.72 SharePoint Foundation     General                   tkpk     High       VtemplateManager::loadUncustomiz...
11:00:58.72 SharePoint Foundation     General                   tkoq     High       CFormWebPartXmlFromRowSetData::P...
11:00:58.72 SharePoint Foundation     General                   tkof     High       CWebPartXmlBuilder::Add failed w...
11:00:58.72 SharePoint Foundation     General                   8kh7     High       Der Vorgang kann nicht erfolgrei...
11:00:58.74 SharePoint Foundation     General                   ev0l     Monitor... SPSolutionExporter: Microsoft.Sh...
11:00:58.74 SharePoint Foundation     Runtime                   tkau     Unexpected System.Runtime.InteropServices.C...
11:00:58.74 SharePoint Foundation     Template Cache            fo1v     Monitor... Leaked record detected with addr...
11:00:58.74 SharePoint Foundation     Monitoring                b4ly     Medium     Leaving Monitored Scope (Request...
Werden nur bestimmte Spalten in der Ausgabe benötigt, kann man die Ausgabe seinen Wünschen, z.B. mit ft anpassen:
Get-SPLogEvent | ft Category, Message -Autosize

Über Thomas Roschinsky
Software Engineer | .NET | SharePoint | Dynamics CRM | BI | C# | C/C++

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: