Exchange Web Services

El registro se utiliza para la depuración, así como para recopilar y analizar información de trabajo sobre la aplicación. Esta información se escribe en un archivo llamado log. Los archivos de registro contienen información del sistema sobre el funcionamiento de la aplicación cliente, por ejemplo, acciones del usuario o del programa.

En este artículo, cubriremos cómo configurar el registro de actividad del cliente EWS utilizando C# .NET.

API C# .NET para trabajar con MS Exchange Web Services

Para gestionar MS Exchange Web Services, utilizaremos Aspose.Email para .NET.

Es una potente API que permite un acceso a varios servicios de MS Exchange Server sin problemas. Además, proporciona muchas características para implementar aplicaciones de cliente de correo electrónico.

Puedes descargar la DLL de la API o instalarla desde NuGet usando el siguiente comando.

PM> Install-Package Aspose.Email 

Habilitar el registro de actividad usando el archivo App.config

Esta opción es adecuada para aplicaciones donde app.config es la forma preferida de mantener la configuración de la aplicación.

Los siguientes son los pasos para habilitar el registro en EWSClient en C#.

  • Primero, agrega un archivo de configuración de la aplicación a un proyecto de C#, si no se ha añadido antes.
  • Luego, añade el siguiente contenido al archivo de configuración.
<?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>

Podemos ver dos secciones de configuración:

  • EWSDiagnosticLog - Especifica la ruta relativa o absoluta al archivo de registro.
  • EWSDiagnosticLog_UseDate - especifica si se debe agregar una representación en cadena de la fecha actual al nombre del archivo de registro.

Habilitar el registro de actividad usando el archivo appsettings.json

Esta opción es preferida para aplicaciones .NET Core.

Los siguientes son los pasos para habilitar el registro en EWSClient en C#.

  • Primero, añade un archivo de configuración appsettings.json a un proyecto de C#, si no se ha añadido antes. Asegúrate de que el archivo del proyecto contenga las siguientes líneas en la sección ItemGroup:
<Content Include="appsettings.json">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
  • Luego, añade el siguiente contenido al archivo appsettings.json.
{
  "EWSDiagnosticLog": "ews.log",
  "EWSDiagnosticLog_UseDate": true
}

Podemos ver dos propiedades:

  • EWSDiagnosticLog - Especifica la ruta relativa o absoluta al archivo de registro.
  • EWSDiagnosticLog_UseDate - especifica si se debe agregar una representación en cadena de la fecha actual al nombre del archivo de registro.

Habilitar el registro de actividad en el código del programa

También puedes habilitar el registro inmediatamente en el código. Nota: incluso si ya has habilitado el registro usando archivos de configuración, esta opción se aplicará.

Los siguientes son los pasos para habilitar el registro en EWSClient en C#.

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

Un ejemplo de información de un archivo de registro

A continuación se muestra un ejemplo de las entradas del archivo de registro cuando se ejecuta el método ListMessages. Cada nueva entrada está precedida por una marca de tiempo.

Las siguientes entradas pueden distinguirse en el archivo de registro:

  1. Encabezado del archivo de registro. Incluye la versión de Aspose.Email, el nombre y la hora de inicio.
Aspose.Email para .NET [22.10.0.0] Registro de diagnóstico del cliente EWS

Comenzado: 07.11.2022 13:40:16
  1. Solicitud SOAP al servidor.
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. Encabezados de respuesta 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. Respuesta del servidor 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>

Obtén una licencia de API gratuita

Puedes obtener una licencia temporal gratuita para usar Aspose.Email para .NET sin limitaciones de evaluación.

Conclusión

En este artículo has aprendido cómo configurar el registro de actividad en el cliente EWS usando C#. Esta característica te permite tener un mejor monitoreo de tu aplicación cliente. Además, puedes explorar la documentación para leer más sobre Aspose.Email para .NET. También puedes hacer tus preguntas a través de nuestro foro.

Ver también