在我的项目上配置选项时,我遇到了此错误:
System.InvalidOperationException:无法创建类型为“ Microsoft.Extensions.Options.IOptions`1 [[myproject.Models.ConnectionStrings,]”的实例。模型绑定的复杂类型不能为抽象或值类型,并且必须具有无参数构造函数。或者,为'optionsAccessor'参数提供一个非空的默认值。
有什么想法吗?
我将模型配置如下:
namespace myproject.Models
{
public class ConnectionStrings
{
public ConnectionStrings()
{
AzureStorageConnectionString = "azurestorageconnectionstring_ctor";
}
public string AzureStorageConnectionString { get; set; }
}
}
Startup.cs ConfigureServices(IServiceCollection服务)包含以下两行
services.AddOptions();
services.Configure<ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));
我的控制器包含此
private ConnectionStrings _connectionStrings;
public IActionResult Index(IOptions<ConnectionStrings> optionsAccessor)
{
_connectionStrings = optionsAccessor.Value;
return View();
}
我的appsettings.json和appsettings.Development.json都包含以下内容
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"AzureStorageConnectionString": "xxxxxxxxx"
},
}
答案 0 :(得分:3)
您应该将data[, 35] <- ifelse(data[, 35] %in% 1:10, data[, 35 + data[, 35]], data[, 35])
注入到控制器的构造函数中,而不是注入到IOptions<ConnectionStrings>
方法中。
通过将其定义为动作参数,您期望Index()
为您构造它(显然,它不能)。