![](/img/trans.png)
[英]IdentityServer4 Fails to start in Azure error Cannot create instance of type 'System.String' because it is missing a public parameterless constructor
[英]"Cannot create instance of type 'System.String' because it is missing a public parameterless constructor."
我正在嘗試實現選項模式並收到以下錯誤:
“無法創建類型為 'System.String' 的實例,因為它缺少公共無參數構造函數。”
我的設置是這樣的:
我有一個像這樣的控制器類:
public class MyController : Controller
{
private readonly HttpClient _httpClient;
private readonly MyConfig _myConfig;
public MyController(HttpClient httpClient, IOptions<MyConfig> myConfig){
_httpClient = httpClient;
_myConfig = myConfig.Value; <<<<<<<<<<<< FAILS HERE
}
[HttpGet]
public async Task<IActionResult> Get(){
....
var myHttpRequest = new HttpRequestMessage(HttpMethod.Get, _myConfig.MY_ENDPOINT);
...
...
}
}
我有一個 JSON 文件 - 我的 appsettings 是這樣的:
{
"Tracer": {
"Trace": {
"Default": "",
"Smari": ""
}
},
"MY_DB": "",
"MY_USER": "",
"MY_PW": "",
"MY_ENDPOINT": "https://my-test-site/offering",
"MY_CIGO": ""
}
在我的 Startup.cs 中,我寫了以下內容:
services.Configure<MyConfig>(Configuration);
最后我的 MyConfig 類是這樣的:
public class MyConfig
{
public string MY_ENDPOINT { get; set; }
}
任何人都可以看到,為什么它會失敗? 我檢查了我的 JSON 文件的語法,它似乎是正確的,所以我有點迷茫。
跟進聊天討論:
問題是控制器在測試項目中被輔助類實例化。 此幫助程序類需要具有給定名稱 ( appsettings.test.json
) 的 appsettings 文件。 但是測試項目不包含具有預期名稱的 appsettings 文件。 所以添加一個具有正確名稱的 appsettings 文件解決了這個問題。
其他人收到此錯誤的方法:
如果appsettings.json
文件出現問題,很可能會發生此錯誤。 要么是格式問題,要么是文件根本不存在。 因此,請檢查正確的文件名和格式(即使 json 驗證器成功驗證了它)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.