Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Note
Ez nem a cikk legújabb verziója. Az aktuális kiadásról a cikk .NET 10-es verziójában olvashat.
Warning
A ASP.NET Core ezen verziója már nem támogatott. További információt a .NET és a .NET Core támogatási szabályzatában talál. A jelen cikk .NET 9-es verzióját lásd az aktuális kiadásért .
IMiddlewareFactory / IMiddleware egy bővíthetőségi pont a köztes szoftver aktiválásához, amely a következő előnyöket kínálja:
- Aktiválás ügyfélkérésenként (hatókörön belüli szolgáltatások injektálása)
- Köztes szoftver erős gépelése
UseMiddleware bővítménymetelyek ellenőrzik, hogy egy köztes szoftver regisztrált típusa implementál-e IMiddleware. Ha ez megtörténik, a IMiddlewareFactory tárolóban regisztrált példányt használják a IMiddleware megvalósítás megoldására ahelyett, hogy a konvencióalapú köztes szoftver aktiválási logikáját alkalmaznák. A köztes szoftver hatókörrel rendelkező vagy átmeneti szolgáltatásként van regisztrálva az alkalmazás szolgáltatástárolójában.
IMiddleware ügyfélkérésenként (kapcsolatonként) aktiválódik, így a hatókörön belüli szolgáltatások injektálhatók a köztes szoftver konstruktorába.
IMiddleware
IMiddleware az alkalmazás kérési folyamatának köztes szoftverét határozza meg. Az InvokeAsync (HttpContext, RequestDelegate) metódus kezeli a kérelmeket, és visszaad egy olyan értéket Task , amely a köztes szoftver végrehajtását jelöli.
Konvenció szerint aktivált köztes szoftver:
public class ConventionalMiddleware
{
private readonly RequestDelegate _next;
public ConventionalMiddleware(RequestDelegate next)
=> _next = next;
public async Task InvokeAsync(HttpContext context, SampleDbContext dbContext)
{
var keyValue = context.Request.Query["key"];
if (!string.IsNullOrWhiteSpace(keyValue))
{
dbContext.Requests.Add(new Request("Conventional", keyValue));
await dbContext.SaveChangesAsync();
}
await _next(context);
}
}
Köztes szoftver aktiválása:MiddlewareFactory
public class FactoryActivatedMiddleware : IMiddleware
{
private readonly SampleDbContext _dbContext;
public FactoryActivatedMiddleware(SampleDbContext dbContext)
=> _dbContext = dbContext;
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
var keyValue = context.Request.Query["key"];
if (!string.IsNullOrWhiteSpace(keyValue))
{
_dbContext.Requests.Add(new Request("Factory", keyValue));
await _dbContext.SaveChangesAsync();
}
await next(context);
}
}
Bővítmények jönnek létre a köztes szoftverhez:
public static class MiddlewareExtensions
{
public static IApplicationBuilder UseConventionalMiddleware(
this IApplicationBuilder app)
=> app.UseMiddleware<ConventionalMiddleware>();
public static IApplicationBuilder UseFactoryActivatedMiddleware(
this IApplicationBuilder app)
=> app.UseMiddleware<FactoryActivatedMiddleware>();
}
Nem lehet objektumokat átadni a gyári aktiválású köztes szoftvernek a következővel UseMiddleware:
public static IApplicationBuilder UseFactoryActivatedMiddleware(
this IApplicationBuilder app, bool option)
{
// Passing 'option' as an argument throws a NotSupportedException at runtime.
return app.UseMiddleware<FactoryActivatedMiddleware>(option);
}
A gyári aktiválású köztes szoftver hozzá lesz adva a beépített tárolóhoz a következő helyen Program.cs:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<SampleDbContext>
(options => options.UseInMemoryDatabase("SampleDb"));
builder.Services.AddTransient<FactoryActivatedMiddleware>();
Mindkét köztes szoftver regisztrálva van a kérelemfeldolgozási folyamatban, a következőben Program.csis:
var app = builder.Build();
app.UseConventionalMiddleware();
app.UseFactoryActivatedMiddleware();
IMiddlewareFactory
IMiddlewareFactory metódusokat biztosít a köztes szoftver létrehozásához. A köztes szoftvergyár implementációja hatóköralapú szolgáltatásként van regisztrálva a tárolóban.
Az alapértelmezett IMiddlewareFactory implementáció MiddlewareFactorya Microsoft.AspNetCore.Http csomagban található.
További erőforrások
- Mintakód megtekintése vagy letöltése (hogyan töltsd le)
- ASP.NET Core köztes szoftver
- Köztes szoftver aktiválása harmadik féltől származó tárolóval az ASP.NET Core
IMiddlewareFactory / IMiddleware egy bővíthetőségi pont a köztes szoftver aktiválásához.
UseMiddleware bővítménymetelyek ellenőrzik, hogy egy köztes szoftver regisztrált típusa implementál-e IMiddleware. Ha ez megtörténik, a IMiddlewareFactory tárolóban regisztrált példányt használják a IMiddleware megvalósítás megoldására ahelyett, hogy a konvencióalapú köztes szoftver aktiválási logikáját alkalmaznák. A köztes szoftver hatókörrel rendelkező vagy átmeneti szolgáltatásként van regisztrálva az alkalmazás szolgáltatástárolójában.
Benefits:
- Aktiválás ügyfélkérésenként (hatókörön belüli szolgáltatások injektálása)
- Köztes szoftver erős gépelése
IMiddleware ügyfélkérésenként (kapcsolatonként) aktiválódik, így a hatókörön belüli szolgáltatások injektálhatók a köztes szoftver konstruktorába.
Mintakód megtekintése vagy letöltése (hogyan töltsd le)
IMiddleware
IMiddleware az alkalmazás kérési folyamatának köztes szoftverét határozza meg. Az InvokeAsync (HttpContext, RequestDelegate) metódus kezeli a kérelmeket, és visszaad egy olyan értéket Task , amely a köztes szoftver végrehajtását jelöli.
Konvenció szerint aktivált köztes szoftver:
public class ConventionalMiddleware
{
private readonly RequestDelegate _next;
public ConventionalMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context, AppDbContext db)
{
var keyValue = context.Request.Query["key"];
if (!string.IsNullOrWhiteSpace(keyValue))
{
db.Add(new Request()
{
DT = DateTime.UtcNow,
MiddlewareActivation = "ConventionalMiddleware",
Value = keyValue
});
await db.SaveChangesAsync();
}
await _next(context);
}
}
Köztes szoftver aktiválása:MiddlewareFactory
public class FactoryActivatedMiddleware : IMiddleware
{
private readonly AppDbContext _db;
public FactoryActivatedMiddleware(AppDbContext db)
{
_db = db;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
var keyValue = context.Request.Query["key"];
if (!string.IsNullOrWhiteSpace(keyValue))
{
_db.Add(new Request()
{
DT = DateTime.UtcNow,
MiddlewareActivation = "FactoryActivatedMiddleware",
Value = keyValue
});
await _db.SaveChangesAsync();
}
await next(context);
}
}
Bővítmények jönnek létre a köztes szoftverhez:
public static class MiddlewareExtensions
{
public static IApplicationBuilder UseConventionalMiddleware(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<ConventionalMiddleware>();
}
public static IApplicationBuilder UseFactoryActivatedMiddleware(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<FactoryActivatedMiddleware>();
}
}
Nem lehet objektumokat átadni a gyári aktiválású köztes szoftvernek a következővel UseMiddleware:
public static IApplicationBuilder UseFactoryActivatedMiddleware(
this IApplicationBuilder builder, bool option)
{
// Passing 'option' as an argument throws a NotSupportedException at runtime.
return builder.UseMiddleware<FactoryActivatedMiddleware>(option);
}
A gyári aktiválású köztes szoftver hozzá lesz adva a beépített tárolóhoz a következő helyen Startup.ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseInMemoryDatabase("InMemoryDb"));
services.AddTransient<FactoryActivatedMiddleware>();
services.AddRazorPages();
}
Mindkét köztes szoftver regisztrálva van a kérelemfeldolgozási folyamatban a következő helyen Startup.Configure:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseConventionalMiddleware();
app.UseFactoryActivatedMiddleware();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
IMiddlewareFactory
IMiddlewareFactory metódusokat biztosít a köztes szoftver létrehozásához. A köztes szoftvergyár implementációja hatóköralapú szolgáltatásként van regisztrálva a tárolóban.
Az alapértelmezett IMiddlewareFactory implementáció MiddlewareFactorya Microsoft.AspNetCore.Http csomagban található.
További erőforrások
IMiddlewareFactory / IMiddleware egy bővíthetőségi pont a köztes szoftver aktiválásához.
UseMiddleware bővítménymetelyek ellenőrzik, hogy egy köztes szoftver regisztrált típusa implementál-e IMiddleware. Ha ez megtörténik, a IMiddlewareFactory tárolóban regisztrált példányt használják a IMiddleware megvalósítás megoldására ahelyett, hogy a konvencióalapú köztes szoftver aktiválási logikáját alkalmaznák. A köztes szoftver hatókörrel rendelkező vagy átmeneti szolgáltatásként van regisztrálva az alkalmazás szolgáltatástárolójában.
Benefits:
- Aktiválás ügyfélkérésenként (hatókörön belüli szolgáltatások injektálása)
- Köztes szoftver erős gépelése
IMiddleware ügyfélkérésenként (kapcsolatonként) aktiválódik, így a hatókörön belüli szolgáltatások injektálhatók a köztes szoftver konstruktorába.
Mintakód megtekintése vagy letöltése (hogyan töltsd le)
IMiddleware
IMiddleware az alkalmazás kérési folyamatának köztes szoftverét határozza meg. Az InvokeAsync (HttpContext, RequestDelegate) metódus kezeli a kérelmeket, és visszaad egy olyan értéket Task , amely a köztes szoftver végrehajtását jelöli.
Konvenció szerint aktivált köztes szoftver:
public class ConventionalMiddleware
{
private readonly RequestDelegate _next;
public ConventionalMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context, AppDbContext db)
{
var keyValue = context.Request.Query["key"];
if (!string.IsNullOrWhiteSpace(keyValue))
{
db.Add(new Request()
{
DT = DateTime.UtcNow,
MiddlewareActivation = "ConventionalMiddleware",
Value = keyValue
});
await db.SaveChangesAsync();
}
await _next(context);
}
}
Köztes szoftver aktiválása:MiddlewareFactory
public class FactoryActivatedMiddleware : IMiddleware
{
private readonly AppDbContext _db;
public FactoryActivatedMiddleware(AppDbContext db)
{
_db = db;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
var keyValue = context.Request.Query["key"];
if (!string.IsNullOrWhiteSpace(keyValue))
{
_db.Add(new Request()
{
DT = DateTime.UtcNow,
MiddlewareActivation = "FactoryActivatedMiddleware",
Value = keyValue
});
await _db.SaveChangesAsync();
}
await next(context);
}
}
Bővítmények jönnek létre a köztes szoftverhez:
public static class MiddlewareExtensions
{
public static IApplicationBuilder UseConventionalMiddleware(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<ConventionalMiddleware>();
}
public static IApplicationBuilder UseFactoryActivatedMiddleware(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<FactoryActivatedMiddleware>();
}
}
Nem lehet objektumokat átadni a gyári aktiválású köztes szoftvernek a következővel UseMiddleware:
public static IApplicationBuilder UseFactoryActivatedMiddleware(
this IApplicationBuilder builder, bool option)
{
// Passing 'option' as an argument throws a NotSupportedException at runtime.
return builder.UseMiddleware<FactoryActivatedMiddleware>(option);
}
A gyári aktiválású köztes szoftver hozzá lesz adva a beépített tárolóhoz a következő helyen Startup.ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseInMemoryDatabase("InMemoryDb"));
services.AddTransient<FactoryActivatedMiddleware>();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Mindkét köztes szoftver regisztrálva van a kérelemfeldolgozási folyamatban a következő helyen Startup.Configure:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
}
app.UseConventionalMiddleware();
app.UseFactoryActivatedMiddleware();
app.UseStaticFiles();
app.UseMvc();
}
IMiddlewareFactory
IMiddlewareFactory metódusokat biztosít a köztes szoftver létrehozásához. A köztes szoftvergyár implementációja hatóköralapú szolgáltatásként van regisztrálva a tárolóban.
Az alapértelmezett IMiddlewareFactory implementáció MiddlewareFactorya Microsoft.AspNetCore.Http csomagban található.