C# 未找到具有';Autofac.Core.Activators.Reflection.DefaultConstructorFinder';asp.net核心3.1
我正在尝试使用IRazorViewToStringRenderer作为依赖项注入 注册IRazorViewToStringRenderer,如下代码所示C# 未找到具有';Autofac.Core.Activators.Reflection.DefaultConstructorFinder';asp.net核心3.1,c#,asp.net,asp.net-mvc,asp.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,我正在尝试使用IRazorViewToStringRenderer作为依赖项注入 注册IRazorViewToStringRenderer,如下代码所示 public virtual void ConfigureContainer(ContainerBuilder builder) { builder.RegisterType<RazorViewToStringRenderer>().As<IRazorViewToStringRender
public virtual void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterType<RazorViewToStringRenderer>().As<IRazorViewToStringRenderer>().SingleInstance();
builder.AddMonashSecurityModel();
}
Program.cs
公共课程
{
public const string ApplicationName = "XXXXXXX";
public const string ResourceIdentifier = "XXXXXXX";
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)
.AddJsonFile("error-settings.json")
.AddEnvironmentVariables()
.Build();
public static int Main(string[] args)
{
Log.Logger = Configuration
.GetLoggerConfiguration(includeEnvironmentVariables: true)
.CreateLogger();
try
{
Log.Logger.Information("{ApplicationName} is starting up...", ApplicationName);
BuildWebHost(args)
.Build()
.Run();
return 0;
}
catch (Exception ex)
{
Log.Logger.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
}
public static IHostBuilder BuildWebHost(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseConfiguration(Configuration)
.ConfigureLogging((ctx, loggingBuilder) =>
{
ctx.Configuration.ConfigureLogging(
loggingBuilder,
loggerConfig => loggerConfig
.Enrich.WithProperty("SystemIdentifier", Program.ApplicationName)
.Enrich.WithTraceIdentifier()
);
})
.ConfigureServices(x => x.AddAutofac())
.ConfigureAppConfiguration((context, configBuilder) =>
{
var vaultConfig = new AzureKeyVaultOptions();
Configuration.GetSection("AzureKeyVault").Bind(vaultConfig);
configBuilder.ConfigureAzureKeyVault(vaultConfig);
}).UseStartup<Startup>();
});
}
public const string ApplicationName=“XXXXXXX”;
public const string ResourceIdentifier=“XXXXXXX”;
公共静态IConfiguration配置{get;}=new ConfigurationBuilder()
.SetBasePath(目录.GetCurrentDirectory())
.AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true)
.AddJsonFile($“appsettings.{Environment.GetEnvironmentVariable(“ASPNETCORE_Environment”)}.json),可选:true)
.AddJsonFile(“error settings.json”)
.AddenEnvironmentVariables()
.Build();
公共静态int Main(字符串[]args)
{
Log.Logger=配置
.GetLoggerConfiguration(包括环境变量:true)
.CreateLogger();
尝试
{
Log.Logger.Information(“{ApplicationName}正在启动…”,ApplicationName);
BuildWebHost(args)
.Build()
.Run();
返回0;
}
捕获(例外情况除外)
{
Logger.Fatal(例如,“主机意外终止”);
返回1;
}
}
公共静态IHostBuilder BuildWebHost(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(新的AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder=>
{
韦伯造船厂
.UseConfiguration(配置)
.ConfigureLogging((ctx、loggingBuilder)=>
{
ctx.Configuration.ConfigureLogging(
伐木工人,
loggerConfig=>loggerConfig
.Enrich.WithProperty(“系统标识符”,Program.ApplicationName)
.Enrich.WithTraceIdentifier()
);
})
.ConfigureServices(x=>x.AddAutofac())
.ConfigureAppConfiguration((上下文,configBuilder)=>
{
var vaultConfig=new AzureKeyVaultOptions();
Configuration.GetSection(“AzureKeyVault”).Bind(vaultConfig);
configBuilder.ConfigureAzureKeyVault(Vault配置);
}).UseStartup();
});
}
参考资料
您是否已注册了注入所需的依赖项?Autofac建议您没有注册。我需要注册IRazorViewEngine、ITempDataProvider和IServiceProvider吗?我使用了GIT hub源公共void配置服务(IServiceCollection服务){services.AddTransient();services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)中的代码}在这里,他们没有注册另一个。为什么我需要注册另一个Autofac可能没有与开箱即用DI服务相同的默认依赖项注册。尝试添加
builder.RegisterType().As().SingleInstance()
并查看错误是否从抱怨无法解析IRazorViewEngine viewEngine
转移到下一个参数。你能链接你所指的GitHub回购协议吗?
x-exception: DependencyResolutionException
x-message: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Monash.Identity.Api.Services.RazorViewToStringRenderer' can be invoked with the available services and parameters:Cannot resolve parameter 'Microsoft.AspNetCore.Mvc.Razor.IRazorViewEngine viewEngine' of constructor 'Void .ctor(Microsoft.AspNetCore.Mvc.Razor.IRazorViewEngine, Microsoft.AspNetCore.Mvc.ViewFeatures.ITempDataProvider, System.IServiceProvider)'.
x-powered-by: ASP.NET
public const string ApplicationName = "XXXXXXX";
public const string ResourceIdentifier = "XXXXXXX";
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true)
.AddJsonFile("error-settings.json")
.AddEnvironmentVariables()
.Build();
public static int Main(string[] args)
{
Log.Logger = Configuration
.GetLoggerConfiguration(includeEnvironmentVariables: true)
.CreateLogger();
try
{
Log.Logger.Information("{ApplicationName} is starting up...", ApplicationName);
BuildWebHost(args)
.Build()
.Run();
return 0;
}
catch (Exception ex)
{
Log.Logger.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
}
public static IHostBuilder BuildWebHost(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseConfiguration(Configuration)
.ConfigureLogging((ctx, loggingBuilder) =>
{
ctx.Configuration.ConfigureLogging(
loggingBuilder,
loggerConfig => loggerConfig
.Enrich.WithProperty("SystemIdentifier", Program.ApplicationName)
.Enrich.WithTraceIdentifier()
);
})
.ConfigureServices(x => x.AddAutofac())
.ConfigureAppConfiguration((context, configBuilder) =>
{
var vaultConfig = new AzureKeyVaultOptions();
Configuration.GetSection("AzureKeyVault").Bind(vaultConfig);
configBuilder.ConfigureAzureKeyVault(vaultConfig);
}).UseStartup<Startup>();
});
}