تبادل خدمات وب

Logging برای اشکال زدایی و همچنین برای جمع آوری و تجزیه و تحلیل اطلاعات کاری در مورد برنامه استفاده می شود. این اطلاعات در فایلی به نام log نوشته می شود. فایل‌های گزارش شامل اطلاعات سیستم در مورد عملکرد برنامه مشتری، به عنوان مثال، عملکرد کاربر یا برنامه است.

در این مقاله، نحوه تنظیم ثبت فعالیت مشتری 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 File، Activity Logging را فعال کنید

این گزینه برای برنامه‌هایی مناسب است که «app.config» روش ترجیحی برای حفظ پیکربندی برنامه است.

مراحل زیر برای فعال کردن ورود به EWSClient در سی شارپ است.

  • در ابتدا، اگر قبلاً اضافه نشده است، یک فایل پیکربندی برنامه را به پروژه 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” - مسیر نسبی یا مطلق فایل log را مشخص می کند.
  • “EWSDiagnosticLogUseDate” - مشخص می کند که آیا یک نمایش رشته ای از تاریخ جاری به نام فایل گزارش اضافه شود یا خیر.

با استفاده از فایل appsettings.json، گزارش فعالیت را فعال کنید

این گزینه برای برنامه های NET Core ترجیح داده می شود.

مراحل زیر برای فعال کردن ورود به EWSClient در سی شارپ است.

  • در ابتدا، اگر قبلاً اضافه نشده است، یک فایل پیکربندی «appsettings.json» را به یک پروژه C# اضافه کنید. مطمئن شوید که فایل پروژه حاوی خطوط زیر در قسمت ItemGroup باشد:
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • سپس محتوای زیر را به فایل appsettings.json اضافه کنید.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

ما می توانیم دو ویژگی را ببینیم:

  • “EWSDiagnosticLog” - مسیر نسبی یا مطلق فایل log را مشخص می کند.
  • “EWSDiagnosticLogUseDate” - مشخص می کند که آیا یک نمایش رشته ای از تاریخ جاری به نام فایل گزارش اضافه شود یا خیر.

فعال کردن Activity Logging در کد برنامه

همچنین می توانید ورود به سیستم را بلافاصله در کد فعال کنید. توجه: حتی اگر قبلاً با استفاده از فایل های پیکربندی ورود به سیستم را فعال کرده باشید، این گزینه اعمال خواهد شد.

مراحل زیر برای فعال کردن ورود به EWSClient در سی شارپ است.

  • ابتدا یک EWSClient ایجاد کنید.
  • دوم، مسیر فایل log را با استفاده از ویژگی LogFileName تنظیم کنید.
  • در نهایت، در صورت لزوم، ویژگی UseDateInLogFileName را تنظیم کنید.
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/EWS/Exchange.asmx", credentials))
{
  client.LogFileName = @"Aspose.Email.EWS.log";
  client.UseDateInLogFileName = false;
}

نمونه ای از اطلاعات فایل لاگ

در زیر نمونه‌ای از ورودی‌های فایل log هنگام اجرای روش ListMessages آورده شده است. قبل از هر ورودی جدید یک مهر زمانی وجود دارد.

ورودی های زیر را می توان در فایل log متمایز کرد:

  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 را تنظیم کنید. این ویژگی به شما اجازه می دهد تا نظارت بهتری بر برنامه مشتری خود داشته باشید. علاوه بر این، می‌توانید اسناد را بررسی کنید تا درباره Aspose.Email for .NET. اطلاعات بیشتری کسب کنید.

همچنین ببینید