Usługi sieciowe wymiany

Logging służy do debugowania, a także do zbierania i analizowania informacji roboczych o aplikacji. Informacje te są zapisywane w pliku zwanym dziennikiem. Pliki dziennika zawierają informacje systemowe dotyczące działania aplikacji klienckiej, na przykład działania użytkownika lub programu.

W tym artykule omówimy, jak skonfigurować rejestrowanie aktywności klienta EWS przy użyciu języka C# .NET.

Interfejs API C# .NET do pracy z usługami internetowymi MS Exchange

Do zarządzania MS Exchange Web Services użyjemy Aspose.Email for .NET.

Jest to potężny interfejs API, który umożliwia bezproblemowy dostęp do różnych usług MS Exchange Server. Ponadto zapewnia wiele funkcji do implementacji aplikacji klienckich poczty e-mail.

Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją z NuGet za pomocą następującego polecenia.

PM> Install-Package Aspose.Email 

Włącz rejestrowanie aktywności przy użyciu pliku App.config

Ta opcja jest odpowiednia dla aplikacji, w których app.config jest preferowanym sposobem przechowywania konfiguracji aplikacji.

Poniżej przedstawiono kroki umożliwiające włączenie logowania w EWSClient w języku C#.

  • Najpierw dodaj plik konfiguracyjny aplikacji do projektu C#, jeśli nie został on wcześniej dodany.
  • Następnie dodaj następującą zawartość do pliku konfiguracyjnego.
<?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>

Widzimy dwie sekcje ustawień:

  • EWSDiagnosticLog — określa względną lub bezwzględną ścieżkę do pliku dziennika.
  • EWSDiagnosticLogUseDate — określa, czy dodać ciąg reprezentujący bieżącą datę do nazwy pliku dziennika.

Włącz rejestrowanie aktywności przy użyciu pliku appsettings.json

Ta opcja jest preferowana w przypadku aplikacji platformy .NET Core.

Poniżej przedstawiono kroki umożliwiające włączenie logowania w EWSClient w języku C#.

  • Najpierw dodaj plik konfiguracyjny appsettings.json do projektu C#, jeśli nie został on wcześniej dodany. Upewnij się, że plik projektu zawiera następujące wiersze w sekcji ItemGroup:
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • Następnie dodaj następującą zawartość do pliku appsettings.json.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

Widzimy dwie właściwości:

  • EWSDiagnosticLog — określa względną lub bezwzględną ścieżkę do pliku dziennika.
  • EWSDiagnosticLogUseDate — określa, czy dodać ciąg reprezentujący bieżącą datę do nazwy pliku dziennika.

Włącz rejestrowanie aktywności w kodzie programu

Możesz także włączyć logowanie natychmiast w kodzie. Uwaga: nawet jeśli masz już włączone logowanie przy użyciu plików konfiguracyjnych, ta opcja zostanie zastosowana.

Poniżej przedstawiono kroki umożliwiające włączenie logowania w EWSClient w języku C#.

using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
  client.LogFileName = @"Aspose.Email.EWS.log";
  client.UseDateInLogFileName = false;
}

Przykład informacji o pliku dziennika

Poniżej znajduje się przykład wpisów pliku dziennika, gdy wykonywana jest metoda ListMessages. Każdy nowy wpis jest poprzedzony znacznikiem czasu.

W pliku dziennika można wyróżnić następujące wpisy:

  1. Nagłówek pliku dziennika. Obejmuje wersję Aspose.Email, nazwę i czas rozpoczęcia.
Aspose.Email for .NET [22.10.0.0] EWS Client diagnostic log

Started: 07.11.2022 13:40:16
  1. Żądanie SOAP do serwera.
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. Nagłówki odpowiedzi HTTP
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. Odpowiedź serwera SOAP.
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>

Uzyskaj bezpłatną licencję API

Możesz otrzymać darmową tymczasową licencję na korzystanie z Aspose.Email for .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyłeś się, jak skonfigurować rejestrowanie aktywności w kliencie EWS przy użyciu języka C#. Ta funkcja umożliwia lepsze monitorowanie aplikacji klienckiej. Ponadto możesz zapoznać się z dokumentacją, aby dowiedzieć się więcej o Aspose.Email for .NET. Możesz także zadawać pytania na naszym forum.

Zobacz też