Веб-служби Exchange

Logging використовується для налагодження, а також для збору та аналізу робочої інформації про програму. Ця інформація записується у файл, який називається журналом. Файли журналів містять системну інформацію про роботу клієнтської програми, наприклад, дії користувача або програми.

У цій статті ми розглянемо, як налаштувати журнал активності клієнта EWS за допомогою C# .NET.

C# .NET API для роботи з веб-службами MS Exchange

Для керування веб-службами MS Exchange ми будемо використовувати Aspose.Email for .NET.

Це потужний API, який забезпечує безперешкодний доступ до різноманітних служб MS Exchange Server. Крім того, він надає багато можливостей для впровадження клієнтських програм електронної пошти.

Ви можете завантажити DLL API або встановити його з NuGet за допомогою наступної команди.

PM> Install-Package Aspose.Email 

Увімкніть журнал активності за допомогою файлу App.config

Цей параметр підходить для програм, де app.config є кращим способом збереження конфігурації програми.

Нижче наведено кроки для ввімкнення входу в EWSClient у C#.

  • По-перше, додайте файл конфігурації програми до проекту C#, якщо він не був доданий раніше.
  • Потім додайте наступний вміст до файлу конфігурації.
<?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>

Ми можемо побачити два розділи налаштувань:

  • EWSDiagnosticLog - вказує відносний або абсолютний шлях до файлу журналу.
  • EWSDiagnosticLogUseDate - визначає, чи додавати рядкове представлення поточної дати до імені файлу журналу.

Увімкніть журнал активності за допомогою файлу appsettings.json

Цей параметр є кращим для програм .NET Core.

Нижче наведено кроки для ввімкнення входу в EWSClient у C#.

  • По-перше, додайте файл конфігурації appsettings.json до проекту C#, якщо він не був доданий раніше. Переконайтеся, що файл проекту містить такі рядки в розділі ItemGroup:
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • Потім додайте наступний вміст до файлу appsettings.json.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

Ми можемо побачити дві властивості:

  • EWSDiagnosticLog - вказує відносний або абсолютний шлях до файлу журналу.
  • EWSDiagnosticLogUseDate - визначає, чи додавати рядкове представлення поточної дати до імені файлу журналу.

Увімкнути журнал активності в програмному коді

Ви також можете включити реєстрацію відразу в коді. Примітка: навіть якщо ви вже ввімкнули журналювання за допомогою конфігураційних файлів, цей параметр буде застосовано.

Нижче наведено кроки для ввімкнення входу в EWSClient у C#.

  • Спочатку створіть EWSClient.
  • По-друге, встановіть шлях до файлу журналу за допомогою властивості LogFileName.
  • Нарешті, за потреби встановіть властивість UseDateInLogFileName.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
  client.LogFileName = @"Aspose.Email.EWS.log";
  client.UseDateInLogFileName = false;
}

Приклад інформації про файл журналу

Нижче наведено приклад записів у файлі журналу під час виконання методу ListMessages. Кожному новому запису передує мітка часу.

У файлі журналу можна виділити такі записи:

  1. Заголовок файлу журналу. Включає версію Aspose.Email, назву та час початку.
Aspose.Email for .NET [22.10.0.0] EWS Client diagnostic log

Started: 07.11.2022 13:40:16
  1. Запит SOAP до сервера.
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
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.
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>

Отримайте безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію на використання Aspose.Email for .NET без обмежень щодо оцінювання.

Висновок

У цій статті ви дізналися, як налаштувати журнал активності в клієнті EWS за допомогою C#. Ця функція дозволяє краще контролювати клієнтську програму. Крім того, ви можете переглянути документацію, щоб дізнатися більше про Aspose.Email for .NET. Крім того, ви можете поставити свої запитання через наш форум.

Дивись також