Ich erhalte einen 500-Fehler, wenn ich Zugriff versuchen, ein Objekt I services.AddSingleton<>()
im ConfigureServices
Verfahren in Startup.cs
mit injizierten haben:kann nicht einen Dienst vom Typ ‚xyz‘ lösen
kann nicht einen Dienst vom Typ lösen proj.Auth.IAuthProvider
für den Parameter authProvider
der Methode Configure
auf Typ proj.Startup
.
Soweit ich aus der Betrachtung "arbeiten" Codebeispiele sollte dies funktionieren ...
Startup.cs sagen kann:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<AppSettings>(Configuration);
services.AddSingleton<IAuthProvider, TranslatorAuthProvider>();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IAuthProvider authProvider)
{
...
app.Run(async context =>
{
await authProvider.GetToken();
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
TranslatorAuthProvider.cs:
namespace proj.Auth
{
public class TranslatorAuthProvider : IAuthProvider
{
public TranslatorAuthProvider(IHttpContextAccessor httpContextAccessor, IOptions<AppSettings> settings)
{
...
}
public async Task<OAuthToken> GetToken()
{
...
}
}
}
IAuthProvider.cs:
namespace proj.Auth
{
public interface IAuthProvider
{
Task<OAuthToken> GetToken();
}
}