试图在startup.cs中添加一个简单的类作为服务,但是错误不断使事情变得混乱。
public interface IAHSRepository : IDisposable
{
string GetModules();
string GetInvoices();
}
读取文件的类
public class AHSRepository : IAHSRepository
{
public AHSRepository(IWebHostEnvironment webHostEnvironment, ILogger<AHSRepository> logger)
{
hostEnvironment = webHostEnvironment;
jsonFileName = hostEnvironment.WebRootPath + "/db.json";
_logger = logger;
}
private readonly IWebHostEnvironment hostEnvironment;
private readonly string jsonFileName;
private readonly ILogger<AHSRepository> _logger;
private bool disposedValue;
public string GetInvoices()
{
throw new NotImplementedException();
}
public string GetModules()
{
return ReadJSonData(jsonFileName).SelectToken("modules").ToString();
}
private JObject ReadJSonData(string jsonFileName)
{
try
{
JObject result;
using (StreamReader file = File.OpenText(jsonFileName))
using (JsonTextReader reader = new JsonTextReader(file))
{
result = (JObject)JToken.ReadFrom(reader);
}
return result;
}
catch (Exception ex)
{
_logger.LogError("Error Occurred : " + ex.Message);
return null;
}
}
protected virtual void Dispose(bool disposing)
{
if (!disposedValue)
{
if (disposing)
{
// TODO: dispose managed state (managed objects)
}
// TODO: free unmanaged resources (unmanaged objects) and override finalizer
// TODO: set large fields to null
disposedValue = true;
}
}
// // TODO: override finalizer only if 'Dispose(bool disposing)' has code to free unmanaged resources
// ~AHSRepository()
// {
// // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
// Dispose(disposing: false);
// }
public void Dispose()
{
// Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
试图向Startup.cs添加服务
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IAHSRepository, AHSRepository>();
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddAzureAdBearer(options => Configuration.Bind("AzureAd", options)) ;
services.AddMvc();
}
错误
InvalidOperationException:尝试激活“ proto_api.Controllers.ModulesController”时,无法解析类型为“ proto_api.Interfaces.IAHSRepository”的服务。