簡體   English   中英

無法解析“ xyz”類型的服務

[英]Could not resolve a service of type 'x.y.z'

當我嘗試訪問使用Startup.csConfigureServices方法中的services.AddSingleton<>()注入的對象時出現500錯誤:

無法為類型proj.Auth.IAuthProvider上的方法Configure的參數authProvider解析類型為authProviderproj.Startup

據我從查看“工作”的代碼示例可以看出,這應該工作...

Startup.cs:

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();
    }
}

是的,這是預期的。 它無法解析IHttpContextAccessor ,因為IHttpContextAccessor自最近以來未默認注冊(請參閱#190

您應該像這樣在ConfigureServices()手動注冊它

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM