Implementación de características para audiencias de destino en una aplicación ASP.NET Core
Artículo
En esta guía, usará el filtro de selección de destino para implementar una característica para audiencias de destino para la aplicación ASP.NET Core. Para más información sobre el filtro de destino, consulte Implementación de características en audiencias de destino.
El comando usa el Administrador de secretos para almacenar un secreto denominado Endpoints:AppConfiguration, que almacena el punto de conexión para el almacén de App Configuration. Reemplace el marcador de posición <your-App-Configuration-endpoint> por el punto de conexión del almacén de App Configuration. Puede encontrar el punto de conexión en la hoja Información general del almacén de App Configuration en Azure Portal.
CLI de .NET
dotnetuser-secrets init
dotnetuser-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"
El comando usa el administrador de secretos para almacenar un secreto denominado ConnectionStrings:AppConfiguration, que almacena la cadena de conexión para el almacén de App Configuration. Reemplace el marcador de posición <your-App-Configuration-connection-string> por la cadena de conexión del almacén de App Configuration. Puede encontrar la cadena de conexión en la Configuración de acceso del almacén de App Configuration en Azure Portal.
CLI de .NET
dotnetuser-secrets init
dotnetuser-secrets set ConnectionStrings:AppConfiguration "<your-App-Configuration-connection-string>"
Agregue Azure App Configuration y administración de características a la aplicación.
Use DefaultAzureCredential para autenticarse en el almacén de App Configuration. Siga las instrucciones para asignar la credencial al rol Lector de datos de App Configuration. Asegúrese de dejar tiempo suficiente para que el permiso se propague antes de ejecutar la aplicación.
Actualice el archivo Program.cs con el código siguiente.
C#
// Existing code in Program.cs// ... ...using Azure.Identity;
var builder = WebApplication.CreateBuilder(args);
// Retrieve the endpointstring endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration")
?? thrownew InvalidOperationException("The setting `Endpoints:AppConfiguration` was not found.");
// Connect to Azure App Configuration and load all feature flags with no label
builder.Configuration.AddAzureAppConfiguration(options =>
{
options.Connect(new Uri(endpoint), new DefaultAzureCredential())
.UseFeatureFlags();
});
// Add Azure App Configuration middleware to the container of services
builder.Services.AddAzureAppConfiguration();
// Add feature management to the container of services
builder.Services.AddFeatureManagement();
// The rest of existing code in Program.cs// ... ...
Actualice el archivo Program.cs con el código siguiente.
C#
// Existing code in Program.cs// ... ...var builder = WebApplication.CreateBuilder(args);
// Retrieve the connection stringstring connectionString = builder.Configuration.GetConnectionString("AppConfiguration")
?? thrownew InvalidOperationException("The connection string 'AppConfiguration' was not found.");
// Connect to Azure App Configuration and load all feature flags with no label
builder.Configuration.AddAzureAppConfiguration(options =>
{
options.Connect(connectionString)
.UseFeatureFlags();
});
// Add Azure App Configuration middleware to the container of services
builder.Services.AddAzureAppConfiguration();
// Add feature management to the container of services
builder.Services.AddFeatureManagement();
// The rest of existing code in Program.cs// ... ...
Habilite la actualización de la configuración y de la marca de características desde Azure App Configuration con el middleware App Configuration.
Actualice Program.cs con el siguiente código.
C#
// Existing code in Program.cs// ... ...var app = builder.Build();
// Use Azure App Configuration middleware for dynamic configuration refresh
app.UseAzureAppConfiguration();
// The rest of existing code in Program.cs// ... ...
Agregue una nueva página de Razor vacía denominada Beta en el directorio Pages. Incluye dos archivos Beta.cshtml y Beta.cshtml.cs.
CSHTML
@page
@model TestFeatureFlags.Pages.BetaModel@{
ViewData["Title"] = "Beta Page";
}<h1>This is the beta website.</h1>
Abra Beta.cshtml.cs y agregue el atributo FeatureGate a la clase BetaModel.
C#
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.FeatureManagement.Mvc;
namespaceTestFeatureFlags.Pages
{
[FeatureGate("Beta")]
publicclassBetaModel : PageModel
{
publicvoidOnGet()
{
}
}
}
Abra Pages/_ViewImports.cshtml y registre el asistente de etiquetas del administrador de características mediante una directiva de @addTagHelper.
Abra _Layout.cshtml en el directorio Pages/Shared. Inserte una nueva etiqueta <feature> entre los elementos de la barra de navegación Inicio y Privacidad, tal como se muestra en las líneas resaltadas a continuación.
Habilitación de la selección de destino para la aplicación web
Se requiere un contexto de destino para la evaluación de características con destino. Puede proporcionarlo como parámetro para la API de featureManager.IsEnabledAsync explícitamente. En ASP.NET Core, el contexto de destino también se puede proporcionar a través de la colección de servicios como contexto ambiente mediante la implementación de la interfaz ITargetingContextAccessor.
Descriptor de acceso de contexto de destino
Para proporcionar el contexto de destino, pase el tipo de implementación del ITargetingContextAccessor al método WithTargeting<T>. Si no se proporciona ningún tipo, se usa una implementación predeterminada, como se muestra en el siguiente fragmento de código. El descriptor de acceso de contexto de destino predeterminado utiliza HttpContext.User.Identity.Name como UserId y HttpContext.User.Claims de tipo Role para Groups. Puede hacer referencia a DefaultHttpTargetingContextAccessor para implementar el suyo propio si es necesario personalizarlo. Para obtener más información acerca de la implementación de ITargetingContextAccessor, consulte la referencia de características para el destino.
C#
// Existing code in Program.cs// ... ...// Add feature management to the container of services
builder.Services.AddFeatureManagement()
.WithTargeting();
// The rest of existing code in Program.cs// ... ...
Nota
Para las aplicaciones Blazor, consulte las instrucciones para habilitar la administración de características como servicios con ámbito.
Filtro de selección de destino en acción
Compile y ejecute la aplicación. Inicialmente, el elemento Beta no aparece en la barra de herramientas, porque la opción porcentaje predeterminado está establecida en 0.
Seleccione el vínculo Registrar en la esquina superior derecha para crear una nueva cuenta de usuario. Use una dirección de correo electrónico de test@contoso.com. En la pantalla Register Confirmation (Confirmación del registro), seleccione Click here to confirm your account (Haga clic aquí para confirmar su cuenta).
Inicie sesión como test@contoso.com, con la contraseña que estableció al registrar la cuenta.
El elemento Beta ahora se muestra en la barra de herramientas, puesto que test@contoso.com está especificado como usuario de destino.
Ahora inicie sesión como testuser@contoso.com, con la contraseña que estableció al registrar la cuenta. El elemento Beta no aparece en la barra de herramientas porque testuser@contoso.com se especifica como un usuario excluido.
Pasos siguientes
Para más información sobre los filtros de características, continúe con los siguientes documentos.
Este módulo le guía a través de la implementación de una marca de característica en una aplicación de microservicios de ASP.NET mediante Azure App Configuration.
Muestre las características de Microsoft Entra ID para modernizar las soluciones de identidad, implementar soluciones híbridas e implementar la gobernanza de identidades.