Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Sugerencia
Este contenido es un extracto del libro electrónico Blazor para desarrolladores de ASP NET Web Forms para Azure, disponible en documentos de .NET o como un PDF descargable gratuito que se puede leer sin conexión.
Las aplicaciones escritas para ASP.NET normalmente tienen un global.asax.cs
archivo que define el Application_Start
evento que controla qué servicios están configurados y están disponibles para la representación HTML y el procesamiento de .NET. En este capítulo se examina cómo las cosas son ligeramente diferentes con ASP.NET Core y Blazor Server.
Application_Start y Web Forms
El método de formularios Application_Start
web predeterminados ha crecido a lo largo de años para controlar muchas tareas de configuración. Un nuevo proyecto de formularios web forms con la plantilla predeterminada en Visual Studio 2022 ahora contiene la siguiente lógica de configuración:
-
RouteConfig
- Enrutamiento de direcciones URL de la aplicación -
BundleConfig
- Agrupación y minificación de CSS y JavaScript
Cada uno de estos archivos individuales reside en la App_Start
carpeta y se ejecuta solo una vez al principio de la aplicación.
RouteConfig
en la plantilla predeterminada del proyecto agrega el FriendlyUrlSettings
en los formularios web, permitiendo que las direcciones URL de la aplicación omitan la extensión de archivo .ASPX
. La plantilla predeterminada también contiene una directiva que proporciona códigos de estado de redirección HTTP permanentes (HTTP 301) para las .ASPX
páginas a la URL amigable con el nombre de archivo que omite la extensión.
Con ASP.NET Core y Blazor, estos métodos se simplifican y consolidan en la Startup
clase o se eliminan en favor de las tecnologías web comunes.
Estructura de inicio del servidor Blazor
Las aplicaciones blazor Server residen sobre una versión de ASP.NET Core 3.0 o posterior. aplicaciones web de ASP.NET Core se configuran en Program.cs, o a través de un par de métodos en la clase Startup.cs
. A continuación se muestra un archivo Program.cs de ejemplo:
using BlazorApp1.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();
Los servicios necesarios de la aplicación se agregan a la colección WebApplicationBuilder
de la instancia Services
. Así es como se configuran los distintos servicios de ASP.NET Core Framework con el contenedor integrado de inserción de dependencias del marco. Los distintos builder.Services.Add*
métodos agregan servicios que habilitan características como la autenticación, las páginas de razor, el enrutamiento del controlador MVC, SignalR y las interacciones del servidor Blazor entre muchas otras. Este método no era necesario en formularios web, ya que el análisis y control de los archivos ASPX, ASCX, ASHX y ASMX se definieron haciendo referencia a ASP.NET en el archivo de configuración de web.config. Puede encontrar más información sobre la inserción de dependencias en ASP.NET Core en la documentación en línea.
Después de que el app
haya sido construido por el builder
, el resto de las llamadas en app
configuran su canalización HTTP. Con estas llamadas, desde la parte superior a la inferior se declara el middleware que controlará todas las solicitudes enviadas a la aplicación. La mayoría de estas características de la configuración predeterminada se dispersaron entre los archivos de configuración de formularios web y ahora están en un solo lugar para facilitar la referencia.
Ya no se ubica la configuración de la página de error personalizada en un archivo web.config
, sino que ahora se configura para mostrarse siempre si el entorno de la aplicación no está etiquetado Development
. Además, las aplicaciones de ASP.NET Core ahora están configuradas para servir páginas seguras con TLS de forma predeterminada con la UseHttpsRedirection
llamada al método .
A continuación, se realiza una llamada de método de configuración inesperada a UseStaticFiles
. En ASP.NET Core, la compatibilidad con solicitudes de archivos estáticos (como JavaScript, CSS y archivos de imagen) debe habilitarse explícitamente y solo los archivos de la carpeta wwwroot de la aplicación se pueden direccionables públicamente de forma predeterminada.
La línea siguiente es la primera que replica una de las opciones de configuración de formularios web: UseRouting
. Este método agrega el enrutador de ASP.NET Core a la canalización y se puede configurar aquí o en los archivos individuales que puede tener en cuenta para el enrutamiento. Puede encontrar más información sobre la configuración de enrutamiento en la sección Enrutamiento.
Las llamadas finales app.Map*
de esta sección definen los puntos de conexión en los que ASP.NET Core está monitorizando. Estas rutas son las ubicaciones accesibles desde la web a las que puede acceder en el servidor web y reciben contenido controlado por .NET y que se le devuelve. La primera entrada de MapBlazorHub
configura un centro de SignalR para proporcionar la conexión en tiempo real y persistente al servidor, donde se controla el estado y la representación de los componentes de Blazor. La MapFallbackToPage
llamada al método indica la ubicación accesible desde la web de la página que inicia la aplicación Blazor y también configura la aplicación para controlar las solicitudes de vinculación profunda desde el lado cliente. Verá esta característica en funcionamiento si abre un explorador y navega directamente a la ruta controlada de Blazor en la aplicación, como /counter
en la plantilla de proyecto predeterminada. La solicitud se gestiona mediante la página de respaldo _Host.cshtml, que a continuación ejecuta el enrutador Blazor y representa la página del contador.
La última línea inicia la aplicación, algo que no era necesario en los formularios web (ya que se basaba en IIS para ejecutarse).
Actualización del proceso BundleConfig
Las tecnologías para agrupar recursos como hojas de estilos CSS y archivos javaScript han cambiado significativamente, con otras tecnologías que proporcionan herramientas y técnicas en constante evolución para administrar estos recursos. Para ello, se recomienda usar una herramienta de línea de comandos node como Grunt / Gulp / WebPack para empaquetar los recursos estáticos.
Las herramientas de línea de comandos Grunt, Gulp y WebPack y sus configuraciones asociadas se pueden agregar a la aplicación y ASP.NET Core omitirá silenciosamente esos archivos durante el proceso de compilación de la aplicación. Puede agregar una llamada para ejecutar sus tareas; para ello, incluya Target
dentro del archivo del proyecto con una sintaxis similar a la siguiente que desencadenará un script de gulp y el destino min
dentro de ese script.
<Target Name="MyPreCompileTarget" BeforeTargets="Build">
<Exec Command="gulp min" />
</Target>
Encontrará más detalles sobre ambas estrategias para administrar los archivos CSS y JavaScript en la documentación de Agrupación y minimización de recursos estáticos en ASP.NET Core.