C# Appsettings.json获取字符串并运行两个程序

C# Appsettings.json获取字符串并运行两个程序,c#,.net-core,asp.net-core-mvc,C#,.net Core,Asp.net Core Mvc,我使用的是从VS代码运行和调试,但当我同时运行项目API和MVC时,会出现错误 Microsoft.EntityFrameworkCore.SqlServer.dll中发生“System.ArgumentNullException”类型的异常,但未在用户代码中处理:“值不能为null。” 我的代码: options.UseSqlServer(Configuration["Data:UCASAppDatabase:ConnectionString"])); 这发生在我使用debug运行两个项目之

我使用的是从VS代码运行和调试,但当我同时运行项目API和MVC时,会出现错误

Microsoft.EntityFrameworkCore.SqlServer.dll中发生“System.ArgumentNullException”类型的异常,但未在用户代码中处理:“值不能为null。”

我的代码:

options.UseSqlServer(Configuration["Data:UCASAppDatabase:ConnectionString"]));
这发生在我使用debug运行两个项目之后,但如果我在API工作之外创建appsettings,但我想要的是在API内部使用appsettings

如何从appsettings.json获取字符串,而不创建新的appsettings.json


通常最好将它们分开,但如果您真的只想使用一个,您应该能够将appsettings.json文件作为链接项添加到不包含物理文件的项目中。使用add=>existingitem,从add下拉列表中选择“addaslink”,然后选择要添加的文件。确保他们的构建操作是内容+“更新时复制”,这样您就可以开始了。你可能会考虑制作一个解决方案文件夹,并把共享资源放在那里,这样你就可以更清楚地看到共享资源了。 编辑: 如果VS代码无法通过UI,您应该能够手动添加。 编辑.csproj文件并添加所需的内容文件:

<ItemGroup> 
    <Content Include="..\Root\appsettings.json" Link="appsettings.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>

保存最新

Copy
appsettings.json
到项目的根目录。@TanvirArjel但是使用为每个项目定义的文件不是更好吗?不必改变位置,当我尝试将mvc中的视图放在根目录上时,我的老师谈到了这一点是的,因为我使用mvc从api中获取数据,它们是不同的projects@phuzi将MVC应用程序与Web API应用程序分离有其自身的好处——它使将来更容易过渡到SPA风格的应用程序,如果所有流量都通过API,那么它会将业务逻辑集中在API中,这意味着API中有更多功能可供其他消费者利用(如移动或桌面应用程序)。仅仅因为你不了解它的好处并不意味着这种方法是无效的。我知道你可以在Visual Studio中这样做,它在VS代码中也能工作吗?可能不行,但你应该能够手动将链接添加到你的.csproj文件中:我将我的.csproj从api更改为`“.\Root\appsettings.json”将是您的项目的相对位置。您需要根据您的文件相对于所需项目的位置对其进行更改。此外,我会将其保存在自己的
中,最好不要混合项目组用途。