我在 Dot net 6 中有 2 个不同的 Web API。每个 Web API 都是 Visual studio 2022 解决方案中的一个单独项目。
我需要在program.cs的两个API中分别设置中间件服务。我想创建一个单独的类库并重用两者中的逻辑
这些是我实现 AddCors 所采取的步骤
- Program.cs 中的两个 API 都需要以下代码
builder.Services.AddCors(o =>
o.AddPolicy("AllowOrigins", builder =>
{
builder.WithOrigins("http://localhost:4200")
.AllowAnyMethod()
.AllowAnyHeader();
}));
- 为了避免在两个 API 中重复此逻辑,我创建了一个项目“服务扩展”,并创建了以下包含 cors 逻辑的类,以便我可以在两个 API 中引用它
public static class ServiceExt
{
public static void addCors(this IServiceCollection services) =>
services.AddCors(
// code to add CORS here...
);
}
}
但问题是它在这里无法识别 AddCors 扩展方法..
- 如果这有效,我希望 Program.cs 中的两个 API 中都包含以下语句
using ServiceExtensions;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.addCors();
最佳答案
只需确保您已在 API 项目的项目引用中添加 ServiceExtensions
项目即可。
我的扩展方法。
using Microsoft.Extensions.DependencyInjection;
namespace ServiceExtensions
{
public static class ServiceExtensions
{
public static IServiceCollection ConfigureCORS(this IServiceCollection services)
=> services.AddCors(options =>
{
services.AddCors(o =>
o.AddPolicy("AllowOrigins", builder =>
{
builder.WithOrigins("http://localhost:4200")
.AllowAnyMethod()
.AllowAnyHeader();
}));
});
}
}
注意:安装并导入 Microsoft.Extensions.DependencyInjection 包以访问 ServiceExtensions
项目中的服务集合
关于c# - DotNet 6 - 如何创建服务扩展的类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70472624/