Usar el control de inicio de sesión común de los útiles de XRM en las aplicaciones cliente
La lógica para autenticación de Microsoft Dataverse, almacenamiento de credenciales y recuperación, y registro de diagnóstico está integrado en el inicio de sesión común, de modo que se pueden aprovechar rápidamente estas funciones en las aplicaciones cliente de Windows (WPF) para Dataverse. El control de inicio de sesión común es una implementación de Microsoft.Xrm.Tooling.CrmConnectControl. A continuación, se muestra una imagen del control.
Requisitos previos
- .NET Framework versión 4.8 o una versión posterior
- Visual Studio 2019 o posterior
- Acceso a Internet para que pueda descargar los paquetes de NuGet requeridos
- Acceso de red a un entorno de prueba de Dataverse y credenciales de inicio de sesión válidas
Crear una aplicación WPF que use el control de inicio de sesión común
Aquí se describe el proceso para crear una aplicación Windows Presentation Foundation (WPF) que aprovecha el control de inicio de sesión común, incluido el código subyacente para la autenticación, el almacenamiento de credenciales y la reutilización, y el seguimiento predeterminado o registro.
La solicitud completada se puede encontrar aquí: AppWithLoginControl.
Crear un proyecto con el control de inicio de sesión
Comience por crear una nueva solución de Visual Studio y un proyecto WPF, luego, agregue el código XAML de control de inicio de sesión.
Iniciar Visual Studio y crear un nuevo proyecto usando la plantilla Aplicación WPF (.NET Framework) para una aplicación de escritorio de Windows C#.
Configure el proyecto y use el marco de trabajo .NET Framework 4.8.
Seleccionar Proyecto > Administrar paquetes NuGet. Examine o busque los siguientes paquetes e instálelos (en el orden que se muestra a continuación) en el proyecto.
- Microsoft.CrmSdk.XrmTooling.CoreAssembly
- Microsoft.CrmSdk.XrmTooling.WpfControls
En el Explorador de soluciones, haga clic con el botón secundario en el nombre del proyecto y seleccione Agregar > Nueva carpeta.
Asigne a la carpeta el nombre "LoginUX" y luego copie el código XAML de control de inicio de sesión en esa carpeta. Basta con arrastrar y soltar el archivo ExampleLoginForm.xaml desde el Explorador de archivos en la carpeta del proyecto Visual Studio y el archivo C# asociado también aparecerá en el proyecto.
Pruebe a compilar la solución (F6). Debe compilarse sin errores ni advertencias.
Conectar el control de inicio de sesión a la aplicación
Ahora vamos a conectar el control de inicio de sesión a la aplicación.
Haga doble cli en el archivo ExampleLoginForm.xaml en el Explorador de soluciones. Debería ver una imagen del control en el diseñador.
Cambie a la pestaña del diseñador MainWindow.xaml. Agregue un control de Botón en el diseñador y establezca los valores de las propiedades Nombre y Contenido común en btnSignIn e Inicar sesión en Dataverse, respectivamente.
Haga doble clic en el botón para agregar el código del evento de clic del botón. Se muestra una ventana de edición de código para el archivo de clase MainWindow.
Sustituya el método de controlador del evento Button_Click vacío con este código (más abajo) para llamar al control de inicio de sesión y crear una instancia del objeto de conexión de Dataverse.
private void Button_Click(object sender, RoutedEventArgs e)
{
// Instantiate the login control.
ExampleLoginForm ctrl = new ExampleLoginForm();
// Wire the button click event to the login response.
ctrl.ConnectionToCrmCompleted += ctrl_ConnectionToCrmCompleted;
// Show the login control.
ctrl.ShowDialog();
// Check that a web service connection is returned and the service is ready.
if (ctrl.CrmConnectionMgr != null && ctrl.CrmConnectionMgr.CrmSvc != null && ctrl.CrmConnectionMgr.CrmSvc.IsReady)
{
// Display the Dataverse version and connected environment name
MessageBox.Show("Connected to Dataverse version: " + ctrl.CrmConnectionMgr.CrmSvc.ConnectedOrgVersion.ToString() +
" Organization: " + ctrl.CrmConnectionMgr.CrmSvc.ConnectedOrgUniqueName, "Connection Status");
// TODO Additional web service operations can be performed here
}
else
{
MessageBox.Show("Cannot connect; try again!", "Connection Status");
}
}
- Agregue la definición del método del controlador de eventos ctrl_ConnectionToCrmCompleted en la clase MainWindow debajo del método del controlador de eventos Button_Click y en el mismo nivel de sangría.
private void ctrl_ConnectionToCrmCompleted(object sender, EventArgs e)
{
if (sender is ExampleLoginForm)
{
this.Dispatcher.Invoke(() =>
{
((ExampleLoginForm)sender).Close();
});
}
}
- Agregue una instrucción de uso al principio del archivo C# para que se resuelva la clase ExampleLoginForm.
using PowerApps.Samples.LoginUX;
- Compile el programa (F6). Debe compilarse sin errores ni advertencias.
Probar el programa
Ahora ejecutaremos el programa y probaremos su funcionamiento.
Ejecute el programa (F5).
Seleccione el botón Iniciar sesión en Dataverse Se mostrará el control de inicio de sesión.
La siguiente figura muestra la selección del entorno en línea de Office 365 y cómo se marca Mostrar la lista de organizaciones disponibles para ver una lista de entornos de los que el usuario es miembro.
Seleccione Iniciar sesión.
Cuando se le solicite la información de inicio de sesión, indíquela. La cuenta especificada está en el formulario someone@my-env.onmicrosoft.com.
Una lista de entornos se muestra en el control. Elija uno y seleccione Iniciar sesión una segunda vez.
Se muestra un cuadro de diálogo de estado de la conexión que contiene la versión de Dataverse y el nombre de la organización.
Haga clic en Aceptar.
Si vuelve a hace clic en Iniciar sesión en Dataverse, la aplicación le preguntará si desea elegir las credenciales guardadas en la última actividad de inicio de sesión o volver a especificar las credenciales.
Cuando haya terminado de probar, cierre la ventana del programa.
Consulte también
Crear aplicaciones cliente de Windows mediante las herramientas XRM
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).