我正在尝试确认我们已更改的各种运行时设置正在应用于我的应用程序。特别是gcTrimCommitOnLowMemory
文件的运行时部分中的Aspnet.config
。如何检查当前应用程序的值?
我显然可以阅读.config
文件,但我想查看MY apps运行时的运行值。
我试图搜索这个无济于事。调用ConfigurationManager.GetSection("runtime")
只会返回System.Configuration.IgnoreSection
个实例。
答案 0 :(得分:0)
我会手动阅读.config
文件(事实上,这就是我在相关案例中所做的事情)。考虑一下,当您使用后台发生的System.Configuration
API时。所以,即使不幸[1],当他们没有暴露runtime
- 部分时,你仍然可以手动阅读并最终获得相同的效果。
结果的准确性也应该同样好。如果某人在应用程序启动后更改了这些设置的值,理论上ConfigurationManage
也会看到这些值,即使它们已经过时了#34;因此,自我阅读方法在这里并不差。
FWIW,您可以使用以下xpath来读取您之后的值(再加上两个通常感兴趣的值):
/configuration/runtime/gcTrimCommitOnLowMemory/@enabled
/configuration/runtime/gcServer/@enabled
/configuration/runtime/gcConcurrent/@enabled
除了编写自己的(本机DLL)并在CLR的内存中进行戳入之外," trim commit"的实际运行时值。设置似乎没有暴露给应用程序。 您可以通过CoreCLR源代码search查看配置值的展开方式。
在ASP.NET应用程序中,您必须找到应用程序池实际使用的aspnet.config文件。我没有这方面的经验,但this文章提供了更多信息。
[1]我认为运行时部分没有映射到正确的配置部分,甚至被托管ConfigurationManager
忽略,因为它是由CLR的本机启动代码读取的,因此&#34没有兴趣"托管代码。