我在IIS中部署了.NET core mvc应用程序,当我运行应用程序时,页面显示502.5错误,我在powershell中运行命令“dotnet D:\deploy\WebApp\WebApp.dll”,以下显示详细错误内容:
NOTE:.net核心版本2.0.0
Unhandled Exception: System.ArgumentNullException: Value cannot be null.
Parameter name: implementationInstance
at Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions
.AddSingleton[TService](IServiceCollection services, TService implementationInstance)
我知道错误是怎么发生的,如何实例化?
public class Startup
{ ...
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton(CreateQuery()); // this is error location
...
}
IQuery CreateQuery()
{
IQuery query = null;
var dataBase = Configuration.GetSection("AppSettings")["DataBase"];
var defaultConnection = Configuration.GetSection("ConnectionStrings")["SqlServer"];
switch (dataBase)
{
case "sqlserver":
query = new WebApp.Query.Query(defaultConnection);
break;
}
return query;
}
}
如果有人来寻找可能的解决方案,我可以通过使用以下命令获取配置来解决 .NET Core 3.1 项目中的此问题:IServiceProvider
回调由提供.AddSingleton
通过以下方式:
public class Startup
{ ...
public void ConfigureServices(IServiceCollection services)
{
...
// Pass the service provider that AddSingleton provides
services.AddSingleton((serviceProvider) => {
CreateQuery(serviceProvider)
});
...
}
IQuery CreateQuery(IServiceProvider serviceProvider)
{
IQuery query = null;
// Use the service provider to get the configuration
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
var dataBase = configuration.GetSection("AppSettings")["DataBase"];
var defaultConnection = configuration.GetSection("ConnectionStrings")["SqlServer"];
switch (dataBase)
{
case "sqlserver":
query = new WebApp.Query.Query(defaultConnection);
break;
}
return query;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)