【发布时间】:2022-12-11 09:27:28
【问题描述】:
我的服务位于项目中名为Services 的文件夹下,我已将与用户相关的部分分组在名为UserService 的文件夹中。在该文件夹下,我有一个名为 IUserService.cs 的接口和一个名为 UserService.cs 的类,其中包含基本的用户身份验证方法。
这是文件夹结构的图片:
为了将此用户服务注册到依赖项注入,我使用了一个名为RegisterServices.cs 的扩展方法类。
这是我尝试使用以下代码注册用户服务时遇到的错误:Severity Code Description Project File Line Suppression State Error CS0118 'UserService' is a namespace but is used like a type Infinium.API D:\Infinium Projects\Infinium\Infinium.API\Services\ServiceRegister.cs 16 Active
下面是RegisterServices.cs的代码
using Infinium.API.Authorization;
using Infinium.API.DataManager;
using Infinium.API.Services.UserService;
namespace Infinium.API.Services
{
public static class ServiceRegister
{
public static void RegisterServices(this IServiceCollection services)
{
// vNext DB
services.AddSingleton<IDataAccessor, DataAccessor>();
//services.Configure<AppSettings>(getser)
services.AddScoped<IJwtUtils, JwtUtils>();
services.AddScoped<IUserService, UserService>();
}
}
}
我已将 RegisterServices 扩展方法类添加到 Program.cs,如下所示;
using Infinium.API.Authorization;
using Infinium.API.Helpers;
using Infinium.API.Services;
using MaxRAV.API.Helpers;
using Serilog;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddCors(options =>
{
options.AddPolicy(name: "AllowedCorsOrigins",
builder =>
{
builder
.SetIsOriginAllowed((_) => true)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// configure strongly typed settings object
builder.Services.Configure<AppSettings>(builder.Configuration.GetSection("AppSettings"));
builder.Services.RegisterServices();
builder.Host.UseSerilog((ctx, lc) => lc
.WriteTo.Console()
.WriteTo.Seq("http://localhost:5341") // comment if not configired
);
var app = builder.Build();
app.UseCors("AllowedCorsOrigins");
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
// global error handler
app.UseMiddleware<ErrorHandlerMiddleware>();
// custom jwt auth middleware
app.UseMiddleware<JwtMiddleware>();
//app.UseAuthorization();
app.MapControllers();
app.Run();
用于 .NET 5 和 .NET 6 的相同代码有时会引发此错误。我假设文件夹名称与类名称冲突,但我不确定为什么它不会一直发生。 也许解决方案是重命名文件夹?
【问题讨论】:
标签: c# dependency-injection visual-studio-2022 .net-7.0 c#-11.0