gpt4 book ai didi

c# Remote ServerManager & COM Surrogate 足迹

转载 作者:行者123 更新时间:2023-11-30 18:31:21 27 4
gpt4 key购买 nike

我有以下方法在一个漂亮的网页上显示 IIS worker 请求,但是每次刷新页面时它都会增加目标机器上 dllhost(COM 代理)的内存消耗,直到没有更多可用内存。我是 C# 的初学者,所以我希望有人能向我解释如何更改此代码以在每次刷新时释放目标服务器上的内存占用量?

protected void Page_Load(object sender, EventArgs e)
{

manager = ServerManager.OpenRemote("Lonappu01032");

int filtered = Convert.ToInt32(Request.QueryString["filter"]);
StringBuilder sb = new StringBuilder();

foreach (WorkerProcess proc in manager.WorkerProcesses)
{
RequestCollection rc = proc.GetRequests(0);

var selected = from r in rc
select r;
if (filtered>0)
{
selected = from r in rc
where r.SiteId == filtered
select r;

}


foreach (Request r in selected)
{

sb.AppendFormat("<tr><td><a href=\"?filter={8}\">{8}</a></td><td>{0}</td><td>{1}</td><td>{2}</td><td><img src=\"http://mobilust.net/onlines/iptoflag.aspx?ip={3}\" alt=\"{3}\" /> {3}</td><td>{4} ({5}s)</td><td>{6}</td><td>{7}</td></tr>", r.HostName, Server.HtmlEncode(r.Url), r.Verb, r.ClientIPAddr, r.PipelineState, TimeSpan.FromMilliseconds(r.TimeInState).TotalSeconds, r.CurrentModule, TimeSpan.FromMilliseconds(r.TimeElapsed).TotalSeconds, r.SiteId);
RequestCount++;
}

}
}

最佳答案

第一部分(C# 中的一般良好实践)

在 .NET 中,使用实现 IDisposable 的类时使用“using”子句。这样做可确保在完成后调用 dispose 方法。恰好 ServerManager 类实现了 IDisposable,多好啊。 “应该”本身就足够了。

所以像下面这样实现“使用”,它可能会解决您的问题:

protected void Page_Load(object sender, EventArgs e)
{

using (var manager = ServerManager.OpenRemote("Lonappu01032"))
{
int filtered = Convert.ToInt32(Request.QueryString["filter"]);
StringBuilder sb = new StringBuilder();

foreach (WorkerProcess proc in manager.WorkerProcesses)
{
//your foreach remains unchanged
}
}
}

第二部分(总有一个但是)

但是,根据您使用的 Windows/IIS 版本,似乎存在一个可能无法修复的已知错误。在这里查看示例使用和报告的错误:https://connect.microsoft.com/VisualStudio/feedback/details/722272/microsoft-web-administration-servermanager-memory-leak

关于c# Remote ServerManager & COM Surrogate 足迹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20334109/

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