asp应用程序

  • 类别:安卓应用
  • 作者:
  • 更新:2025-05-20 11:06:48
  • 点击:

ASP.NET Core 允许您全面控制应用程序对每个请求的响应。应用程序的入口点是一个名为 Startup 的类,该类负责设置配置并将应用程序所需的各项服务联系起来。开发人员可以在 Startup 类中配置请求管道,该管道将用于处理应用程序的所有请求。


Configure 方法


Configure 方法用于指定 ASP.NET Core 应用程序如何对每个 HTTP 请求做出响应。虽然您可以配置每个请求都接收相同的响应,但在实际场景中,您需要更多的功能。复杂的管道配置可以通过中间件进行封装,并通过扩展方法添加到 IApplicationBuilder 对象上。


Configure 方法必须接受一个 IApplicationBuilder 参数。还可以选择性地指定其他服务,如 IWebHostEnvironmentIConfiguration。如果它们可用,这些服务将由服务器注入到方法中。以下是从默认 Web 站点模板中提取的一个例子,其中多个扩展方法被用来配置管道以支持 BrowserLink、错误页、静态文件、ASP.NET MVC 和 Identity:


// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/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.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}

每个中间件都是管道的一部分,比如上面的路由中间件就是其中之一。中间件定义了 ASP.NET Core 如何处理请求和响应,包括传递请求给下一个中间件,或者直接向客户端发送响应。


您可以在 Middleware 章节了解更多关于中间件的知识。


ConfigureServices 方法


Startup 类中的可选方法 ConfigureServices 用于配置供应用程序内使用的各项服务。这些服务可通过 IServiceProvider 接口获取,并可用于应用程序中的各个部分,如中间件、控制器等。


ConfigureServices 方法必须接受一个 IServiceCollection 参数,这是一个表示一组服务及其生命周期的对象。许多 ASP.NET Core 组件和服务都有相关的扩展方法,可以让您轻松地将它们添加到服务容器中。


以下是从默认 Web 站点模板中提取的例子,其中多项扩展方法被用来设置应用程序,以便它可以使用 Entity Framework、Identity 和 MVC:


public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

services.AddControllersWithViews();
services.AddRazorPages();
}

通过依赖注入(Dependency Injection),您可以在需要时向应用程序提供服务,而不是在代码中硬编码具体的实现。就像 Startup 类可以将指定的依赖项作为其方法参数一样,中间件、控制器和其他类也可以这样做。


ConfigureServices 方法也是添加配置选项类的好地方,只要您希望它们在整个应用程序中都可用。有关配置选项的更多信息,请参阅 Configuration


Startup 构造函数


Startup 类有一个构造函数,其中可以注入一些常用的框架服务和对象。以下是可供使用的服务列表:



IWebHostEnvironment: 提供与应用程序环境相关的属性,如内容根路径 (ContentRootPath)、应用程序名称 (ApplicationName) 以及环境名称 (EnvironmentName)。


IConfiguration: 提供应用程序配置值的访问。


ILoggerFactory: 提供创建日志记录器的机制。



请注意,虽然可以在构造函数中使用 IWebHostEnvironmentIConfiguration,但最好是在 ConfigureServicesConfigure 方法中使用它们,因为这两个方法总是会被调用。


使用 IApplicationLifetime 接口


Startup 类可以使用 IApplicationLifetime 接口来监听应用程序的生命周期事件,如下所示:


public class Startup
{
private readonly ILogger<Startup> _logger;

public Startup(IConfiguration configuration, ILogger<Startup> logger)
{
Configuration = configuration;
_logger = logger;
}

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
// ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
}

// Add the following using directive:
using Microsoft.AspNetCore.Hosting;

// Add the following line to the Startup constructor:
private readonly IApplicationLifetime _appLifetime;

public Startup(IConfiguration configuration, ILogger<Startup> logger, IApplicationLifetime appLifetime)
{
Configuration = configuration;
_logger = logger;
_appLifetime = appLifetime;
}

// Add the following method:
private async Task StopApplicationAsync()
{
_logger.LogInformation("Stopping application...");

await _appLifetime.StopApplicationAsync();

_logger.LogInformation("Stopped application.");
}
}

然后,您可以注册一个事件处理器来监听应用程序停止事件:


// Add the following lines after configuring the services in ConfigureServices:

// Register an event handler for when the application stops gracefully.
_appLifetime.ApplicationStopping.Register(() => StopApplicationAsync());

// Register an event handler for when the application stops abruptly.
_appLifetime.ApplicationStopped.Register(() => { });

这些事件处理器将在应用程序关闭时执行,以便您有机会清理资源或保存状态。请注意,`ApplicationStopping` 事件可能是异步的,因此您需要使用 `async` 关键字并返回一个 `Task` 对象。


在多个环境中工作


ASP.NET Core 支持在多个环境中运行应用程序,这对于测试和生产环境之间的隔离至关重要。您可以根据当前环境选择性地启用或禁用中间件、配置值以及其他行为。


您可以使用环境变量、命令行参数或配置文件来指定当前环境。有关详细信息,请参阅官方文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-3.1


附加资源



ASP.NET Core 文档:Startup 类


ASP.NET Core 文档:中间件


ASP.NET Core 文档:身份验证


ASP.NET Core 文档:托管和部署



资源下载

标签:

加入本站QQ群获取更多实时游戏软件,线报,资源,福利点我加群

免责声明:

多特下载站仅为用户提供信息存储空间服务,所有资源均来源于网络或用户上传。我们无法对所有内容进行逐一审核,因此不保证资源的绝对准确性和完整性。用户在使用过程中应自行判断并承担相关风险。如涉及版权问题,请及时联系我们处理。对于因使用本站资源引发的一切争议、损失或法律责任,除法律明确规定外,多特下载站概不负责。请用户务必遵守法律法规,合理合法使用下载内容。侵删请致信E-mail: caozl@nbrjwl.com

同类推荐