Exchange Web Services

Logging wird zur Fehlersuche sowie zur Sammlung und Analyse von Arbeitsinformationen über die Anwendung verwendet. Diese Informationen werden in einer Datei namens Protokoll geschrieben. Protokolldateien enthalten Systeminformationen über den Betrieb der Clientanwendung, zum Beispiel Benutzer- oder Programmaktionen.

In diesem Artikel werden wir behandeln, wie man die Aktivitätsprotokollierung des EWS-Clients mit C# .NET einrichtet.

C# .NET API zur Arbeit mit MS Exchange Web Services

Um MS Exchange Web Services zu verwalten, verwenden wir Aspose.Email für .NET.

Es ist eine leistungsstarke API, die einen nahtlosen Zugriff auf verschiedene Dienste des MS Exchange Servers ermöglicht. Außerdem bietet es viele Funktionen zur Implementierung von E-Mail-Clientanwendungen.

Sie können entweder die DLL der API herunterladen oder sie über NuGet mit dem folgenden Befehl installieren.

PM> Install-Package Aspose.Email 

Aktivitätsprotokollierung mit der App.config-Datei aktivieren

Diese Option eignet sich für Anwendungen, bei denen app.config der bevorzugte Weg zur Speicherung der Anwendungs-Konfiguration ist.

Die folgenden Schritte sind erforderlich, um die Protokollierung in EWSClient in C# zu aktivieren.

  • Zuerst fügen Sie eine Anwendungs-Konfigurationsdatei zu einem C#-Projekt hinzu, falls noch nicht geschehen.
  • Dann fügen Sie den folgenden Inhalt zur Konfigurationsdatei hinzu.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="Aspose.Email.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
    <applicationSettings>
        <Aspose.Email.Properties.Settings>
            <setting name="EWSDiagnosticLog" serializeAs="String">
                <value>..\..\..\Log\Aspose.Email.EWS.log</value>
            </setting>
            <setting name="EWSDiagnosticLog_UseDate" serializeAs="String">
                <value>False</value>
            </setting>
        </Aspose.Email.Properties.Settings>
    </applicationSettings>
</configuration>

Wir sehen zwei Einstellungsabschnitte:

  • EWSDiagnosticLog - Gibt den relativen oder absoluten Pfad zur Protokolldatei an.
  • EWSDiagnosticLog_UseDate - Gibt an, ob eine Zeichenfolgendarstellung des aktuellen Datums zum Protokolldateinamen hinzugefügt werden soll.

Aktivitätsprotokollierung mit der appsettings.json-Datei aktivieren

Diese Option wird für .NET Core-Anwendungen bevorzugt.

Die folgenden Schritte sind erforderlich, um die Protokollierung in EWSClient in C# zu aktivieren.

  • Zuerst fügen Sie eine appsettings.json-Konfigurationsdatei zu einem C#-Projekt hinzu, falls noch nicht geschehen. Stellen Sie sicher, dass die Projektdatei die folgenden Zeilen im ItemGroup-Bereich enthält:
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • Dann fügen Sie den folgenden Inhalt zur appsettings.json-Datei hinzu.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

Wir sehen zwei Eigenschaften:

  • EWSDiagnosticLog - Gibt den relativen oder absoluten Pfad zur Protokolldatei an.
  • EWSDiagnosticLog_UseDate - Gibt an, ob eine Zeichenfolgendarstellung des aktuellen Datums zum Protokolldateinamen hinzugefügt werden soll.

Aktivitätsprotokollierung im Programmcode aktivieren

Sie können die Protokollierung auch sofort im Code aktivieren. Hinweis: Selbst wenn Sie die Protokollierung bereits über Konfigurationsdateien aktiviert haben, wird diese Option angewendet.

Die folgenden Schritte sind erforderlich, um die Protokollierung in EWSClient in C# zu aktivieren.

  • Zuerst erstellen Sie einen EWSClient.
  • Zweitens setzen Sie den Pfad zur Protokolldatei über die LogFileName-Eigenschaft.
  • Schließlich setzen Sie die UseDateInLogFileName-Eigenschaft, falls erforderlich.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
  client.LogFileName = @"Aspose.Email.EWS.log";
  client.UseDateInLogFileName = false;
}

Ein Beispiel für eine Protokolldatei-Information

Nachfolgend finden Sie ein Beispiel für Protokolleinträge, wenn die ListMessages-Methode ausgeführt wird. Jeder neue Eintrag wird von einem Zeitstempel begleitet.

Die folgenden Einträge können im Protokoll unterschieden werden:

  1. Protokolldateikopf. Enthält die Version von Aspose.Email, den Namen und die Startzeit.
Aspose.Email für .NET [22.10.0.0] EWS-Client-Diagnoseprotokoll

Begonnen: 07.11.2022 13:40:16
  1. SOAP-Anfrage an den Server.
07.11.2022 13:40:16	<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Header>
		<ExchangeImpersonation xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
			<ConnectingSID>
				<SmtpAddress>someaddress@someorg.onmicrosoft.com</SmtpAddress>
			</ConnectingSID>
		</ExchangeImpersonation>
		<RequestServerVersion xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Version="Exchange2013" />
	</soap:Header>
	<soap:Body>
		<FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow">
			<ItemShape>
				<BaseShape xmlns="http://schemas.microsoft.com/exchange/services/2006/types">IdOnly</BaseShape>
			</ItemShape>
			<IndexedPageItemView MaxEntriesReturned="2147483647" Offset="0" BasePoint="Beginning" />
			<ParentFolderIds>
				<DistinguishedFolderId xmlns="http://schemas.microsoft.com/exchange/services/2006/types" Id="inbox" />
			</ParentFolderIds>
		</FindItem>
	</soap:Body>
</soap:Envelope>
  1. HTTP-Antwortheader.
07.11.2022 13:40:18	Cache-Control: private
                   	Transfer-Encoding: chunked
                   	Server: Microsoft-IIS/10.0
                   	request-id: 5c777b61-e3d9-c262-fbb0-6f071d9ff68a
                   	Alt-Svc: h3=":443", h3-29=":443"
                   	X-CalculatedFETarget: CH0PR03CU015.internal.outlook.com, BL0PR02CU002.internal.outlook.com
                   	X-BackEndHttpStatus: 200, 200, 200
                   	Set-Cookie: exchangecookie=bf07039c0ee942438170c2958ca2d330; expires=Tue, 07-Nov-2023 10:40:17 GMT; path=/; secure; HttpOnly
                   	X-CalculatedBETarget: BLAPR10MB4915.namprd10.PROD.OUTLOOK.COM
                   	X-RUM-Validated: 1
                   	x-ms-appId: 3fe84e63-c57b-48eb-ab41-879415751cfd
                   	Restrict-Access-Confirm: 1
                   	x-EwsHandler: FindItem
                   	X-AspNet-Version: 4.0.30319
                   	X-BeSku: WCS6
                   	X-DiagInfo: BLAPR10MB4915
                   	X-BEServer: BLAPR10MB4915
                   	X-Proxy-RoutingCorrectness: 1
                   	X-Proxy-BackendServerStatus: 200
                   	X-FEProxyInfo: AS9PR06CA0693.EURPRD06.PROD.OUTLOOK.COM
                   	X-FEEFZInfo: DHR
                   	X-FEServer: BL0PR02CA0063, CH0PR03CA0449, AS9PR06CA0693
                   	X-FirstHopCafeEFZ: DHR
                   	X-Powered-By: ASP.NET
                   	Date: Mon, 07 Nov 2022 10:40:17 GMT
                   	Content-Type: text/xml; charset=utf-8
  1. SOAP-Serverantwort.
07.11.2022 13:40:18	<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Header>
		<ExchangeImpersonation xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
			<ConnectingSID>
				<SmtpAddress>someaddress@someorg.onmicrosoft.com</SmtpAddress>
			</ConnectingSID>
		</ExchangeImpersonation>
		<RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
	</soap:Header>
	<soap:Body>
		<GetItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
			<ItemShape>
				<BaseShape xmlns="http://schemas.microsoft.com/exchange/services/2006/types">IdOnly</BaseShape>
				<AdditionalProperties xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
					<FieldURI FieldURI="item:Attachments" /><FieldURI FieldURI="item:DateTimeCreated" />
					<FieldURI FieldURI="item:DateTimeReceived" /><FieldURI FieldURI="item:DateTimeSent" />
					<FieldURI FieldURI="item:IsDraft" /><FieldURI FieldURI="item:IsFromMe" />
					<FieldURI FieldURI="item:HasAttachments" /><FieldURI FieldURI="item:IsUnmodified" />
					<FieldURI FieldURI="item:ItemClass" /><FieldURI FieldURI="item:IsSubmitted" />
					<FieldURI FieldURI="item:IsResend" /><FieldURI FieldURI="item:DisplayCc" /><FieldURI FieldURI="item:DisplayTo" />
					<FieldURI FieldURI="item:Attachments" /><FieldURI FieldURI="item:LastModifiedTime" />
					<FieldURI FieldURI="item:Size" /><FieldURI FieldURI="item:Subject" />
					<FieldURI FieldURI="item:InternetMessageHeaders" /><FieldURI FieldURI="message:IsRead" />
					<FieldURI FieldURI="message:InternetMessageId" /><FieldURI FieldURI="message:Sender" />
					<FieldURI FieldURI="message:CcRecipients" /><FieldURI FieldURI="message:ToRecipients" />
					<FieldURI FieldURI="message:BccRecipients" /><FieldURI FieldURI="message:From" />
				</AdditionalProperties>
			</ItemShape>
			<ItemIds>
				<ItemId
					Id="AAMkAGJhZjYzY2I5LTdjYWMtNGFmMC05ODI1LTA5MTAzYTgwZTc4OQBGAAAAAABdN1MC60QcSpWwPYUTPhL2BwATlR+p0q0wT6WD0+d4WJhWAAAAAAEMAAATlR+p0q0wT6WD0+d4WJhWAACp2kv8AAA="
					xmlns="http://schemas.microsoft.com/exchange/services/2006/types" />
			</ItemIds>
		</GetItem>
	</soap:Body>
</soap:Envelope>

Holen Sie sich eine kostenlose API-Lizenz

Sie können eine kostenlose Testlizenz erhalten, um Aspose.Email für .NET ohne Evaluierungseinschränkungen zu verwenden.

Fazit

In diesem Artikel haben Sie gelernt, wie man die Aktivitätsprotokollierung im EWS-Client mit C# einrichtet. Diese Funktion ermöglicht Ihnen eine bessere Überwachung Ihrer Clientanwendung. Darüber hinaus können Sie die Dokumentation durchsehen, um mehr über Aspose.Email für .NET zu erfahren. Außerdem können Sie Ihre Fragen über unser Forum stellen.

Siehe auch