我的登台服务器上有两个网站,都是在IIS中运行的Asp.net核心网站。我已将机器范围内的环境变量ASPNETCORE_ENVIRONMENT
设置为Staging
。这适用于其中一个站点,但另一个忽略变量并在生产模式下运行。我必须将托管环境配置到web.config
文件中,以便在分段模式下运行它。
关于为什么一个站点不考虑环境变量的任何提示?
编辑:
在我的两个Startup(IHostingEnvironment env)
构造函数中,我使用了环境变量:
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("logging.json")
.AddEnvironmentVariables(); // <---
Configuration = builder.Build();
}
答案 0 :(得分:13)
如this similar question中所述,诀窍就是设置应用程序池以加载用户变量(IIS - &gt;服务器 - &gt;应用程序池 - &gt;右键单击池 - &gt;设置应用程序池默认值... - &gt;加载用户个人资料=真)。
我只相应地配置了一个应用程序池,因此只有一个站点可以访问环境变量。
答案 1 :(得分:12)
我刚在最后几个小时处理同样的问题。我不确定结果是否会相同,因为您似乎有两个应用程序中的一个正在运行。
我通过Windows Server 2008 R2上的“高级系统设置”将ASPNETCORE_ENVIRONMENT设置为“Staging”作为系统变量,并始终在“Production”环境中结束(如果找不到设置,则为默认环境任何地方)。
使用命令提示符中的“设置”显示“ASPNETCORE_ENVIRONMENT = Staging”的预期结果。
调用Environment.GetEnvironmentVariable(“ASPNETCORE_ENVIRONMENT”)返回null。我创建了另一个名为“Test”的变量,它也返回null。调用任何其他现有变量都会返回预期结果。
我尝试回收应用程序池,更改应用程序池的用户,通过管理控制台重新启动IIS,甚至重新启动World Wide Web Publishing服务(可能与IIS mgmt控制台中的重置相同)都无济于事。
重新启动服务器是我让应用程序返回预期结果的唯一方法。
答案 2 :(得分:8)
如果要在Visual Studio中调试代码,请记住VS会缓存VS启动时存在的环境变量-而不是单击“调试”时!因此,您可能必须重新启动VS才能看到对环境的任何更改。
答案 3 :(得分:2)
在cmd窗口中,运行net stop /y was && net start w3svc
。
来源:ASP.NET核心文档-> Use multiple environments in ASP.NET Core
注意:通过右键单击->停止->在IIS管理器中启动,将无法重新启动IIS。
答案 4 :(得分:-4)
$('.calculate').change(function(){
var groupstr = $('.selectpicker.group').val();
var pricestr = $('.selectpicker.price').val();
if (!isNaN(groupstr) && !isNaN(pricestr)) {
var group = parseInt(groupstr);
var price = parseInt(pricestr);
var total = group * price;
$('#total').val('$' + total);
}
});
您可能没有添加变量public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
if (env.IsDevelopment())
{
// For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}