gpt4 book ai didi

c# - 从 IIS 获取我托管的 Asp.Net 网站的运行 session 计数

转载 作者:太空狗 更新时间:2023-10-29 20:25:04 24 4
gpt4 key购买 nike

我在 IIS 6.0 中托管一个 Asp.Net 网站

我们必须在 web.config 中重置 session 超时

我的客户希望我仅在没有 session 运行(没有人在使用该网站)时重置它。

我们没有使用 Membership 并且 SessionState 设置为 InProc

我如何知道是否有人在使用该站点或任何 session 是否正在运行。

除了托管网站中的 web.config 之外,我无法更改源代码或任何其他文件。

最佳答案

我不太擅长 PowerShell,所以希望您能找到正确的语法。但是……

一种选择是运行 Powershell 脚本并像这样检查 session 计数:

更新:将“Sessions Total”更改为“Sessions Active”

write-host Getting performance counters ...

$perfCounterString = "\asp.net applications(__total__)\sessions active"
$counter = get-counter -counter $perfCounterString
$rawValue = $counter.CounterSamples[0].CookedValue

write-host Session Count is $rawValue

if( $rawValue -gt 0)
{
write-host Session are active - will not stop IIS
exit
}

write-host Stopping IIS
stop-service "IISAdmin"

# Set values
$webConfig = "d:\web.config"
$newTimeout = "20"

# Open file and change value
$doc = new-object System.Xml.XmlDocument
$doc.Load($webConfig)
$doc.SelectSingleNode("//sessionState").timeout = $newTimeout
$doc.Save($webConfig)

write-host Starting IIS
start-service "IISAdmin"
write-host Done!

在桌面上将其保存为“ChangeIIS.ps1”。

现在 Powershell 不喜欢您只运行 .bat 文件之类的脚本。出于安全原因,您必须授予对流程或您的用户的访问权限。所以请执行以下操作:

  1. 打开命令提示符并以管理员身份运行
  2. 输入 powershell
  3. 输入 Set-ExecutionPolicy -scope process Bypass
  4. 输入 sl <path to directory of .sp1 file> . sl [set-location] 类似于 cd在命令提示符下
  5. 输入 $ '.\ChangeIIS.ps1'

它将立即运行并重置值。

这是我在 how I created the PowerShell script 上的博客的链接 以更循序渐进的方式

关于c# - 从 IIS 获取我托管的 Asp.Net 网站的运行 session 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com