Jer*_*oen 3 iis environment-variables windows-server-2012
让 ASP.NET 查看更改PATH
我已经更改了服务器上的
环境变量,并且需要 IIS / W3WP(即我的 ASP.NET 应用程序)来查看此更改。PATH
我从另一个问题的答案中了解到(强调我的):
您必须回收 IIS 进程才能更新它
我的问题:如何“回收”IIS进程?
以下是我尝试解决此问题的方法:
使用iisreset
我尝试过一些东西。我尝试的第一件事是iisreset
,但我的 asp.net 应用程序没有获取路径更改。为了确保我没有疯狂,我尝试重新启动服务器,这确实有效:应用程序现在拾取新的PATH
.
我很想知道是否有一种方法可以防止仅仅因为我想要PATH
在 ASP.NET 应用程序中进行更改而需要重新启动整个计算机...
可能出现的另一件事是我误解了另一个问题(那里的回答者iisreset
在说“回收iis”时确实是指这个问题)?这并不能解释为什么iisreset
对我的情况不起作用,而重新启动服务器却可以。iisreset
我缺少什么选择吗?
在互联网上搜索
我也尝试寻找解决方案。从我第一次搜索我的PATH
问题以来,没有找到任何真实的信息(除了上述问题)。我的第二组关于回收 IIS 进程的搜索效果不佳:我得到了有关iisreset
以及它如何回收工作进程的信息。
重新启动 W3SVC
一位回答者建议重新启动 W3SVC(“万维网发布服务”),这似乎很有希望,但它对我也不起作用(但它可能对你有用!)。我通过更改路径尝试了该建议,使用新的命令提示符验证更改是否已完成,然后重新启动 W3SVC:我的 ASP.NET 应用程序没有骰子。重新启动后,新的命令提示符仍将显示更改后的路径,并且我的应用程序也将看到更改(因此更改本身实际上就是我想要的)。
另一位回答者提出了类似的建议,但有一个重要的区别:让服务保持停止状态一段时间,确认该站点不可用(以查看它实际上是 IIS 为该站点提供服务)。但这对我来说有同样的结果。
终止正确的 IIS 进程
需要注意的是,我考虑的最后一个替代方案是终止 iis 的 svchost 进程,因为这似乎是一个相当残酷的解决方案。我已经尝试过这个并杀死了“ svchost.exe -k iissvcs
”,但这也不起作用。但也许我刚刚杀死了错误的进程。
更改应用程序池设置
我的应用程序的应用程序池有一个在身份下运行的非默认设置“ Load User Profile = False
” NetworkService
。我不确定(即使在阅读内联解释之后)该设置的作用,但我可以想象它对PATH
我的应用程序所看到的变量有一些影响。唉,设置它并True
没有解决任何问题。
添加一些最后的细节,以防万一它们很重要。在我的场景中,我尝试bcp.exe
从以下几方面开始:
using (var process = new Process())
{
process.StartInfo.FileName = "bcp.exe";
process.StartInfo.Arguments = myArguments;
process.StartInfo.UseShellExecute = false;
process.Start();
// Code to handle the process exiting and use the output.
}
Run Code Online (Sandbox Code Playgroud)
我们需要 BCP 版本 11,但服务器上有版本 10。该工具有一个独立的安装程序,它将以下关键部分添加到PATH
:
C:\Program Files\Microsoft SQL Server\110\Tools\Binn
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\
归档时间: |
|
查看次数: |
6262 次 |
最近记录: |