我写了一个ASP.Net Core 2.2应用程序。在我本地运行时一切正常。
我已经发布并将其部署到我的测试机器上,作为一个自包含的应用程序。
目标框架是netcoreapp2.2。RuntimeIdentifier是win-x64。环境是Staging。
当通过命令行运行应用程序进行测试时,似乎没有读取appsettings.staging.json或任何appsettings.json文件。
为了测试目的,我将Startup.cs的Configure方法设置如下:
我已经确认了appsetting.json文件已经在服务器上。
有人能给我解释一下发生了什么事吗?
我已经发布并将其部署到我的测试机器上,作为一个自包含的应用程序。
目标框架是netcoreapp2.2。RuntimeIdentifier是win-x64。环境是Staging。
当通过命令行运行应用程序进行测试时,似乎没有读取appsettings.staging.json或任何appsettings.json文件。
为了测试目的,我将Startup.cs的Configure方法设置如下:
public void Configure( IApplicationBuilder app , IHostingEnvironment env )
{
if( env.IsDevelopment( ) )
{
app.UseDeveloperExceptionPage( );
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts( );
}
app.UseHttpsRedirection( );
Console.WriteLine( $"Chris Environment: {env.EnvironmentName}" );
Console.WriteLine( $"Chris IsStaging: {env.IsStaging( )}" );
Console.WriteLine( $"Chris ConnectionString: {Configuration.GetConnectionString( "DefaultConnection" )}" );
Console.WriteLine( $"Chris LoggingAPI: {Configuration["LoggingAPIURL"]}" );
foreach( var test in Configuration.AsEnumerable( ) )
{
var key = test.Key;
var val = test.Value;
Console.WriteLine( $"Chris Key: {key} - Value: {val}" );
}
app.UseMvc( b =>
{
b.Select( ).Expand( ).Filter( ).OrderBy( ).MaxTop( 100 ).Count( );
b.MapODataServiceRoute( "default" , "api" , EdmModelBuilder.GetEdmModel( app.ApplicationServices ) );
} );
}
我通过在命令行中输入以下命令来运行该应用程序:path/To/My/App.exe --environment Staging
输出结果如下: Chris Environment: Staging Chris IsStaging: True Chris ConnectionString: Chris LoggingAPI:
ConnectionString和LoggingAPI为空白。循环返回许多值,但没有任何在appsettings.json文件中的值。
我的appsettings.json文件如下:
{
"ConnectionStrings": {
"DefaultConnection": "Some ConnectionString"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"LoggingAPIURL": "SomeURL"
}
我已经确认了appsetting.json文件已经在服务器上。
有人能给我解释一下发生了什么事吗?
cmd /c "C:\Outbound\MyAppName\MyAppName.exe"
(它无法以这种方式找到appsettings.json文件)。根据您的答案,当我将命令写成cd "C:\Outbound\MyAppName" && cmd /c MyAppName.exe
时,它完美地工作了。 - Phil Nicholas