我有同样的问题,不同的故事。
Visual Studio 2017 - asp.net核心mvc(sdk 2.2.104)。
在我的例子中:我通过.AddScoped在Startup.cs中注册了一个服务,其中具体的serviceType参数实际上是一个抽象类(重构后忘了改变它)。
否则,请转到Windows事件查看器并尝试在日志中找到线索。
根据 ASPNET芯模块 文章说
GetCurrentDirectory返回由IIS启动的进程的worker目录,而不是应用程序的目录(例如,对于w3wp.exe,为C:\ Windows \ System32 \ inetsrv)。
这意味着配置加载程序将无法找到 appsettings.* 文件,或 任何其他文件 例如自定义配置文件,依赖于 GetCurrentDirectory 呼叫。为了解决你的问题 的 Program.cs中 强> 之后 public static void Main(string[] args) { 添加以下行
appsettings.*
GetCurrentDirectory
public static void Main(string[] args) {
Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
另外,在项目文件中 (例如。 的 MyProject.csproj 强> ) 确保你有以下几行 appsettings.* 存在于输出文件夹中。
<ItemGroup> <Content Update="appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Update="appsettings.Development.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Update="appsettings.Production.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>