IIS请求卡死经验

最近碰到了一个IIS请求卡死的问题。页面可以正常加载,就是一发登陆请求就一直转圈无法继续了。把网站各种设置都检查了一遍,程序日志,系统日志都看了没发现一次,然后怀疑是服务器问题让重启服务器,重启服务器之后就好了。然而正式用了半天又不行了。一步步到请求方法写日志观察发现是获取服务器Mac地址导致的卡死。

证实在少数服务器存在使用一段时间后Windows Management服务出了问题导致通过WMI方式获取Mac的逻辑卡死

//WMI方式,有碰到电脑获取MAC卡死WMI,该方法依赖WMI的系统服务,该服务一般不会被关闭;但如果系统服务缺失或者出现问题,
            //该方法无法取得MAC地址,需要重启Windows Management Instrumentation服务。
            //ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            //ManagementObjectCollection moc2 = mc.GetInstances();
            //foreach (ManagementObject mo in moc2)
            //{
            //    if ((bool)mo["IPEnabled"] == true)
            //    {
            //        resMac = mo["MacAddress"].ToString();
            //        mo.Dispose();
            //        if (resMac == mac)
            //        {
            //            return true;
            //        }
            //    }
            //}

改用NetworkInterface方式就行了

string resMac = "";
            //通过NetworkInterface读取网卡Mac
            NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface ni in interfaces)
            {
                resMac = ni.GetPhysicalAddress().ToString();
                if (resMac == mac)
                {
                    return true;
                }
            }

服务器用着用着网站就假死了,只有杀w3wp进程才回复的问题
经过多方测试发现如果C#代码用了析构函数,并且析构函数的逻辑抛出异常之后就会导致运用程序池假死。用析构抛异常百分百重现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乌鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值