Exchange Web Hizmetleri

Logging hata ayıklamanın yanı sıra uygulama hakkında çalışma bilgilerini toplamak ve analiz etmek için kullanılır. Bu bilgiler günlük adı verilen bir dosyaya yazılır. Günlük dosyaları, örneğin kullanıcı veya program eylemleri gibi istemci uygulamasının çalışması hakkında sistem bilgilerini içerir.

Bu makalede, C# .NET kullanılarak EWS istemci etkinliği günlüğünün nasıl kurulacağını ele alacağız.

MS Exchange Web Hizmetleri ile Çalışmak için C# .NET API

MS Exchange Web Hizmetlerini yönetmek için Aspose.Email for .NET kullanacağız.

MS Exchange Server’ın çeşitli hizmetlerine sorunsuz bir şekilde erişim sağlayan güçlü bir API’dir. Ayrıca, e-posta istemci uygulamalarını uygulamak için pek çok özellik sağlar.

API’nin DLL’sini indirebilir veya aşağıdaki komutu kullanarak NuGet’ten yükleyebilirsiniz.

PM> Install-Package Aspose.Email 

App.config Dosyasını Kullanarak Etkinlik Günlüğünü Etkinleştirin

Bu seçenek, uygulama yapılandırmasını korumak için tercih edilen yolun “app.config” olduğu uygulamalar için uygundur.

C#’ta EWSClient’te oturum açmayı etkinleştirme adımları aşağıda verilmiştir.

  • Öncelikle, daha önce eklenmemişse, bir C# projesine bir uygulama yapılandırma dosyası ekleyin.
  • Ardından, yapılandırma dosyasına aşağıdaki içeriği ekleyin.
<?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>

İki ayar bölümü görebiliriz:

  • “EWSDiagnosticLog” - Günlük dosyasının göreli veya mutlak yolunu belirtir.
  • “EWSDiagnosticLogUseDate” - günlük dosyası adına geçerli tarihin dize gösteriminin eklenip eklenmeyeceğini belirtir.

appsettings.json Dosyasını Kullanarak Etkinlik Günlüğünü Etkinleştirin

Bu seçenek, .NET Core uygulamaları için tercih edilir.

C#’ta EWSClient’te oturum açmayı etkinleştirme adımları aşağıda verilmiştir.

  • Öncelikle, daha önce eklenmemişse, bir C# projesine bir appsettings.json yapılandırma dosyası ekleyin. Proje dosyasının ItemGroup bölümünde aşağıdaki satırları içerdiğinden emin olun:
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • Ardından, aşağıdaki içeriği appsettings.json dosyasına ekleyin.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

İki özellik görebiliriz:

  • “EWSDiagnosticLog” - Günlük dosyasının göreli veya mutlak yolunu belirtir.
  • “EWSDiagnosticLogUseDate” - günlük dosyası adına geçerli tarihin dize gösteriminin eklenip eklenmeyeceğini belirtir.

Program Kodunda Etkinlik Günlüğünü Etkinleştir

Kodda hemen günlüğe kaydetmeyi de etkinleştirebilirsiniz. Not: Yapılandırma dosyalarını kullanarak günlüğe kaydetmeyi zaten etkinleştirmiş olsanız bile, bu seçenek uygulanacaktır.

C#’ta EWSClient’te oturum açmayı etkinleştirme adımları aşağıda verilmiştir.

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

Bir günlük dosyası bilgisi örneği

Aşağıda, ListMessages yöntemi yürütüldüğünde günlük dosyası girişlerine bir örnek verilmiştir. Her yeni girişten önce bir zaman damgası gelir.

Günlük dosyasında aşağıdaki girişler ayırt edilebilir:

  1. Günlük dosyası başlığı. Aspose.Email sürümünü, adını ve başlangıç zamanını içerir.
Aspose.Email for .NET [22.10.0.0] EWS Client diagnostic log

Started: 07.11.2022 13:40:16
  1. Sunucuya SOAP isteği.
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 yanıt başlıkları
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 sunucusu yanıtı.
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>

Ücretsiz API Lisansı Alın

Değerlendirme sınırlamaları olmadan Aspose.Email for .NET kullanmak için ücretsiz geçici lisans alabilirsiniz.

Çözüm

Bu makalede, C# kullanarak EWS istemcisinde etkinlik günlüğü oluşturmayı öğrendiniz. Bu özellik, istemci uygulamanızı daha iyi izlemenizi sağlar. Ayrıca, Aspose.Email for .NET. hakkında daha fazla bilgi edinmek için belgeleri inceleyebilirsiniz. Ayrıca forumumuz aracılığıyla sorularınızı sorabilirsiniz.

Ayrıca bakınız