gpt4 book ai didi

configuration - 在 ASP.Net 5 中配置组件

转载 作者:行者123 更新时间:2023-12-04 06:22:16 27 4
gpt4 key购买 nike

在 ASP.Net 5 中有多种配置组件的方法:

  • AddXXX 方法,用于添加服务,
  • ConfigureXXX 方法,用于配置选项,
  • UseXXX 方法,用于将中间件注册到管道中。

ConfigureXXX() 方法负责配置组件或子组件:

https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNet.Authorization/ServiceCollectionExtensions.cs#L12

public static IServiceCollection ConfigureAuthorization(
[NotNull] this IServiceCollection services,
[NotNull] Action<AuthorizationOptions> configure)
{
return services.Configure(configure);
}

https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Core/DependencyInjection/MvcCoreServiceCollectionExtensions.cs#L50

public static void ConfigureMvc(
[NotNull] this IServiceCollection services,
[NotNull] Action<MvcOptions> setupAction)
{
services.Configure(setupAction);
}

但有时 ConfigureXXX 有点复杂: https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNet.Authentication.Cookies/CookieServiceCollectionExtensions.cs#L31

public static IServiceCollection ConfigureCookieAuthentication(
[NotNull] this IServiceCollection services,
[NotNull] IConfiguration config,
string optionsName)
{
return services.Configure<CookieAuthenticationOptions>(config, optionsName);
}

为什么一些现有组件比其他组件更“可配置”?

作为一个组件编写者,我应该练习什么?

另一个相关问题:AddXXX & UseXXX 有时允许配置组件: https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Core/DependencyInjection/MvcCoreServiceCollectionExtensions.cs#L32

public static IMvcBuilder AddMvcCore(
[NotNull] this IServiceCollection services,
[NotNull] Action<MvcOptions> setupAction)
{
ConfigureDefaultServices(services);
AddMvcCoreServices(services);
services.Configure(setupAction);
return new MvcBuilder() { Services = services, };
}

https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNet.Authentication.OAuth/OAuthAuthenticationExtensions.cs#L22

public static IApplicationBuilder UseOAuthAuthentication(
[NotNull] this IApplicationBuilder app,
[NotNull] string authenticationScheme,
Action<OAuthAuthenticationOptions> configureOptions = null)
{
return app.UseMiddleware<OAuthAuthenticationMiddleware<OAuthAuthenticationOptions>>(
// [...]
}

基本上,使用三种不同的方法配置选项之间的语义区别是什么?尤其是当它在同一组件上可用时。

最佳答案

因此,对于使用 IOptions 服务的选项和任何组件,其想法是让在堆栈中的任何点(添加、使用、配置)配置选项变得容易,它们都是有效的,但顺序很重要。

我们一直使用的一般模式通常采用 Action<YourOptions>任何看起来有用的地方。

关于configuration - 在 ASP.Net 5 中配置组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31485311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com