19 个解决方案
#1
查一下是不是病毒在作怪,再一个就是重装IIS服务。
#2
应该不会自动停止,你看看是不是中病毒了,重装一下再试一下!
#3
自动停止两三分钟?然后呢,又正常了?
#4
一个监测IIS,并定时重新启动的程序。
前言:我的Win2003 Server的IIS执行Asp老是不正常,长的时候可以用几天,短的时候才几个小时就动不动就超时,被客户骂得半死了。没办法所以写了个服务来检查。这是下策。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Net;
namespace *nIISControler
{
public class MainSrv : System.ServiceProcess.ServiceBase
{
private System.Timers.Timer timer1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
string url = "http://www.5inet.net/checkIIS.asp";
int timeout = 6000;
int repeatTime = 300000;
EventLog log =null;
int Times = 1;
public MainSrv()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();
// TODO: 在 InitComponent 调用后添加任何初始化
}
// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MainSrv() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent()
{
this.timer1 = new System.Timers.Timer();
((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit();
//
// timer1
//
this.timer1.Interval = 300000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
//
// MainSrv
//
this.ServiceName = "*nIISControler";
((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit();
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
///
/// 设置具体的操作,以便服务可以执行它的工作。
///
protected override void OnStart(string[] args)
{
log = new EventLog();
log.Log = "Application";
log.Source = this.ServiceName;
foreach(string arg in args)
{
if(arg.ToUpper().StartsWith("/URL:"))
this.url = arg.Split(Convert.ToChar(":"))[1]+":"+arg.Split(Convert.ToChar(":"))[2];
if(arg.ToUpper().StartsWith("/TIMEOUT:"))
this.timeout = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000;
if(arg.ToUpper().StartsWith("/REPEATTIME:"))
this.repeatTime = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000*60;
}
// TODO: 在此处添加代码以启动服务。
this.timer1.Interval = this.repeatTime;
this.timer1.Enabled=true;
if(!CheckIIS(this.url))
this.RestartIIS();
}
private bool CheckIIS(string url)
{
bool b = false;
System.Net.WebResponse wsp = null;
string msg = "正在执行第" + this.Times.ToString() + "次检测:\n检测地址:" + url + "\n超时设置:" + (this.timeout/1000).ToString() + "秒\n检测间隔时间:" + (repeatTime/1000/60).ToString() + "分\n检测结果:";
try
{
System.Net.WebRequest wq = WebRequest.Create(url);
wq.Timeout = this.timeout;
wsp = wq.GetResponse();
if(wsp.Headers.Count>0)
{
b = true;
msg+="正常";
}
wsp.Close();
}
catch(Exception ex)
{
b = false;
msg+="错误\n详细内容:" + ex.Message;
}
finally
{
log.WriteEntry(msg);
}
return b;
}
private void RestartIIS()
{
try
{
System.Diagnostics.Process.Start("IISreset.exe","/restart");
log.WriteEntry("正在执行重新启动命令:iisreset.exe /restart");
}
catch(Exception ex)
{
log.WriteEntry("发生错误:\n" + ex.ToString());
}
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timer1.Enabled=false;
log.Close();
log.Dispose();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Times++;
if(!CheckIIS(this.url))
this.RestartIIS();
}
}
}
===========================
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace *nIISControler
{
///
/// ProjectInstaller 的摘要说明。
///
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
public ProjectInstaller()
{
// 该调用是设计器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.DisplayName = "无垠IIS控制器";
this.serviceInstaller1.ServiceName = "*nIISControler";
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
this.serviceInstaller1.AfterInstall+=new InstallEventHandler(serviceInstaller1_AfterInstall);
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
#endregion
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("*nIISControler");
sc.Start(new string[]{"/url:http://www.5inet.net/checkIIS.asp","/timeout:10","/repeatTime:5"});
sc.Dispose();
}
}
}
前言:我的Win2003 Server的IIS执行Asp老是不正常,长的时候可以用几天,短的时候才几个小时就动不动就超时,被客户骂得半死了。没办法所以写了个服务来检查。这是下策。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Net;
namespace *nIISControler
{
public class MainSrv : System.ServiceProcess.ServiceBase
{
private System.Timers.Timer timer1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
string url = "http://www.5inet.net/checkIIS.asp";
int timeout = 6000;
int repeatTime = 300000;
EventLog log =null;
int Times = 1;
public MainSrv()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();
// TODO: 在 InitComponent 调用后添加任何初始化
}
// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MainSrv() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent()
{
this.timer1 = new System.Timers.Timer();
((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit();
//
// timer1
//
this.timer1.Interval = 300000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
//
// MainSrv
//
this.ServiceName = "*nIISControler";
((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit();
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
///
/// 设置具体的操作,以便服务可以执行它的工作。
///
protected override void OnStart(string[] args)
{
log = new EventLog();
log.Log = "Application";
log.Source = this.ServiceName;
foreach(string arg in args)
{
if(arg.ToUpper().StartsWith("/URL:"))
this.url = arg.Split(Convert.ToChar(":"))[1]+":"+arg.Split(Convert.ToChar(":"))[2];
if(arg.ToUpper().StartsWith("/TIMEOUT:"))
this.timeout = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000;
if(arg.ToUpper().StartsWith("/REPEATTIME:"))
this.repeatTime = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000*60;
}
// TODO: 在此处添加代码以启动服务。
this.timer1.Interval = this.repeatTime;
this.timer1.Enabled=true;
if(!CheckIIS(this.url))
this.RestartIIS();
}
private bool CheckIIS(string url)
{
bool b = false;
System.Net.WebResponse wsp = null;
string msg = "正在执行第" + this.Times.ToString() + "次检测:\n检测地址:" + url + "\n超时设置:" + (this.timeout/1000).ToString() + "秒\n检测间隔时间:" + (repeatTime/1000/60).ToString() + "分\n检测结果:";
try
{
System.Net.WebRequest wq = WebRequest.Create(url);
wq.Timeout = this.timeout;
wsp = wq.GetResponse();
if(wsp.Headers.Count>0)
{
b = true;
msg+="正常";
}
wsp.Close();
}
catch(Exception ex)
{
b = false;
msg+="错误\n详细内容:" + ex.Message;
}
finally
{
log.WriteEntry(msg);
}
return b;
}
private void RestartIIS()
{
try
{
System.Diagnostics.Process.Start("IISreset.exe","/restart");
log.WriteEntry("正在执行重新启动命令:iisreset.exe /restart");
}
catch(Exception ex)
{
log.WriteEntry("发生错误:\n" + ex.ToString());
}
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timer1.Enabled=false;
log.Close();
log.Dispose();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Times++;
if(!CheckIIS(this.url))
this.RestartIIS();
}
}
}
===========================
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace *nIISControler
{
///
/// ProjectInstaller 的摘要说明。
///
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
public ProjectInstaller()
{
// 该调用是设计器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.DisplayName = "无垠IIS控制器";
this.serviceInstaller1.ServiceName = "*nIISControler";
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
this.serviceInstaller1.AfterInstall+=new InstallEventHandler(serviceInstaller1_AfterInstall);
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
#endregion
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("*nIISControler");
sc.Start(new string[]{"/url:http://www.5inet.net/checkIIS.asp","/timeout:10","/repeatTime:5"});
sc.Dispose();
}
}
}
#5
病毒
#6
是不是DefaultAppPool的设定问题呢
#7
楼主升级杀毒软件,查杀病毒!
#8
还有这种事。。。天哪!你可能中木马了吧。。或者中毒了。。。应该查一查。。。
使用命令行脚本 iisweb.vbs(存储在 systemroot\System32 中)使网站停止响应。站点的内容不变,但是在重新启动站点之前用户将无法访问它。
会不会有人用了它啊。。。。。
使用命令行脚本 iisweb.vbs(存储在 systemroot\System32 中)使网站停止响应。站点的内容不变,但是在重新启动站点之前用户将无法访问它。
会不会有人用了它啊。。。。。
#9
看看你的IIS日志存放的盘是不是满了???日志文件在SYstem32\LogFiles下面。
同时在正式使用的时候请禁用IIS日志,在调试的时候再打开。
同时在正式使用的时候请禁用IIS日志,在调试的时候再打开。
#10
up
#11
监测IIS,看看有什么异常
#12
主要是AppPool的问题,给应该程序单独新建一个AppPool,并设定好自己动回收的时间和周期;
我以前管理服务器的时候也经常出现这个问题!
我以前管理服务器的时候也经常出现这个问题!
#13
谢谢各位的热心帮助
最近我又分析了一下日志(自己在程序中作的,记录一些请求和响应信息)。发现在出问题的那几分钟里,网站并没有停止运行,日志中记录了当时接收到请求的时间和响应的时间,只不过在那段时间里处理的数量少一点。有没有可能是在中午时访问量过大而导致系统自动保护?
重装IIS是不太现实的,因为网站已经运行了,每天它都要处理大量工作,停下来重装IIS再做一些事情客户不会答应。
最近我又分析了一下日志(自己在程序中作的,记录一些请求和响应信息)。发现在出问题的那几分钟里,网站并没有停止运行,日志中记录了当时接收到请求的时间和响应的时间,只不过在那段时间里处理的数量少一点。有没有可能是在中午时访问量过大而导致系统自动保护?
重装IIS是不太现实的,因为网站已经运行了,每天它都要处理大量工作,停下来重装IIS再做一些事情客户不会答应。
#14
在我的日志中记录了关于请求和响应的信息以及它们的时间,从这些时间看来,在出问题的那几分钟里,IIS还是处理了请求的,但是通过IE访问时却没有任何信息,就象网站没有启动一样。
#15
welland(微蓝色):
请问在哪个地方设置 AppPool?
请问在哪个地方设置 AppPool?
#16
杀一下毒吧
#17
自己 up 一下,免得沉了
#18
up
#19
up again
#20
#1
查一下是不是病毒在作怪,再一个就是重装IIS服务。
#2
应该不会自动停止,你看看是不是中病毒了,重装一下再试一下!
#3
自动停止两三分钟?然后呢,又正常了?
#4
一个监测IIS,并定时重新启动的程序。
前言:我的Win2003 Server的IIS执行Asp老是不正常,长的时候可以用几天,短的时候才几个小时就动不动就超时,被客户骂得半死了。没办法所以写了个服务来检查。这是下策。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Net;
namespace *nIISControler
{
public class MainSrv : System.ServiceProcess.ServiceBase
{
private System.Timers.Timer timer1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
string url = "http://www.5inet.net/checkIIS.asp";
int timeout = 6000;
int repeatTime = 300000;
EventLog log =null;
int Times = 1;
public MainSrv()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();
// TODO: 在 InitComponent 调用后添加任何初始化
}
// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MainSrv() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent()
{
this.timer1 = new System.Timers.Timer();
((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit();
//
// timer1
//
this.timer1.Interval = 300000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
//
// MainSrv
//
this.ServiceName = "*nIISControler";
((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit();
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
///
/// 设置具体的操作,以便服务可以执行它的工作。
///
protected override void OnStart(string[] args)
{
log = new EventLog();
log.Log = "Application";
log.Source = this.ServiceName;
foreach(string arg in args)
{
if(arg.ToUpper().StartsWith("/URL:"))
this.url = arg.Split(Convert.ToChar(":"))[1]+":"+arg.Split(Convert.ToChar(":"))[2];
if(arg.ToUpper().StartsWith("/TIMEOUT:"))
this.timeout = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000;
if(arg.ToUpper().StartsWith("/REPEATTIME:"))
this.repeatTime = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000*60;
}
// TODO: 在此处添加代码以启动服务。
this.timer1.Interval = this.repeatTime;
this.timer1.Enabled=true;
if(!CheckIIS(this.url))
this.RestartIIS();
}
private bool CheckIIS(string url)
{
bool b = false;
System.Net.WebResponse wsp = null;
string msg = "正在执行第" + this.Times.ToString() + "次检测:\n检测地址:" + url + "\n超时设置:" + (this.timeout/1000).ToString() + "秒\n检测间隔时间:" + (repeatTime/1000/60).ToString() + "分\n检测结果:";
try
{
System.Net.WebRequest wq = WebRequest.Create(url);
wq.Timeout = this.timeout;
wsp = wq.GetResponse();
if(wsp.Headers.Count>0)
{
b = true;
msg+="正常";
}
wsp.Close();
}
catch(Exception ex)
{
b = false;
msg+="错误\n详细内容:" + ex.Message;
}
finally
{
log.WriteEntry(msg);
}
return b;
}
private void RestartIIS()
{
try
{
System.Diagnostics.Process.Start("IISreset.exe","/restart");
log.WriteEntry("正在执行重新启动命令:iisreset.exe /restart");
}
catch(Exception ex)
{
log.WriteEntry("发生错误:\n" + ex.ToString());
}
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timer1.Enabled=false;
log.Close();
log.Dispose();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Times++;
if(!CheckIIS(this.url))
this.RestartIIS();
}
}
}
===========================
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace *nIISControler
{
///
/// ProjectInstaller 的摘要说明。
///
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
public ProjectInstaller()
{
// 该调用是设计器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.DisplayName = "无垠IIS控制器";
this.serviceInstaller1.ServiceName = "*nIISControler";
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
this.serviceInstaller1.AfterInstall+=new InstallEventHandler(serviceInstaller1_AfterInstall);
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
#endregion
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("*nIISControler");
sc.Start(new string[]{"/url:http://www.5inet.net/checkIIS.asp","/timeout:10","/repeatTime:5"});
sc.Dispose();
}
}
}
前言:我的Win2003 Server的IIS执行Asp老是不正常,长的时候可以用几天,短的时候才几个小时就动不动就超时,被客户骂得半死了。没办法所以写了个服务来检查。这是下策。
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Net;
namespace *nIISControler
{
public class MainSrv : System.ServiceProcess.ServiceBase
{
private System.Timers.Timer timer1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
string url = "http://www.5inet.net/checkIIS.asp";
int timeout = 6000;
int repeatTime = 300000;
EventLog log =null;
int Times = 1;
public MainSrv()
{
// 该调用是 Windows.Forms 组件设计器所必需的。
InitializeComponent();
// TODO: 在 InitComponent 调用后添加任何初始化
}
// 进程的主入口点
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
// 同一进程中可以运行多个用户服务。若要将
//另一个服务添加到此进程,请更改下行
// 以创建另一个服务对象。例如,
//
// ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};
//
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MainSrv() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
///
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
///
private void InitializeComponent()
{
this.timer1 = new System.Timers.Timer();
((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit();
//
// timer1
//
this.timer1.Interval = 300000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
//
// MainSrv
//
this.ServiceName = "*nIISControler";
((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit();
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
///
/// 设置具体的操作,以便服务可以执行它的工作。
///
protected override void OnStart(string[] args)
{
log = new EventLog();
log.Log = "Application";
log.Source = this.ServiceName;
foreach(string arg in args)
{
if(arg.ToUpper().StartsWith("/URL:"))
this.url = arg.Split(Convert.ToChar(":"))[1]+":"+arg.Split(Convert.ToChar(":"))[2];
if(arg.ToUpper().StartsWith("/TIMEOUT:"))
this.timeout = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000;
if(arg.ToUpper().StartsWith("/REPEATTIME:"))
this.repeatTime = int.Parse(arg.Split(Convert.ToChar(":"))[1].ToString())*1000*60;
}
// TODO: 在此处添加代码以启动服务。
this.timer1.Interval = this.repeatTime;
this.timer1.Enabled=true;
if(!CheckIIS(this.url))
this.RestartIIS();
}
private bool CheckIIS(string url)
{
bool b = false;
System.Net.WebResponse wsp = null;
string msg = "正在执行第" + this.Times.ToString() + "次检测:\n检测地址:" + url + "\n超时设置:" + (this.timeout/1000).ToString() + "秒\n检测间隔时间:" + (repeatTime/1000/60).ToString() + "分\n检测结果:";
try
{
System.Net.WebRequest wq = WebRequest.Create(url);
wq.Timeout = this.timeout;
wsp = wq.GetResponse();
if(wsp.Headers.Count>0)
{
b = true;
msg+="正常";
}
wsp.Close();
}
catch(Exception ex)
{
b = false;
msg+="错误\n详细内容:" + ex.Message;
}
finally
{
log.WriteEntry(msg);
}
return b;
}
private void RestartIIS()
{
try
{
System.Diagnostics.Process.Start("IISreset.exe","/restart");
log.WriteEntry("正在执行重新启动命令:iisreset.exe /restart");
}
catch(Exception ex)
{
log.WriteEntry("发生错误:\n" + ex.ToString());
}
}
///
/// 停止此服务。
///
protected override void OnStop()
{
// TODO: 在此处添加代码以执行停止服务所需的关闭操作。
this.timer1.Enabled=false;
log.Close();
log.Dispose();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
this.Times++;
if(!CheckIIS(this.url))
this.RestartIIS();
}
}
}
===========================
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace *nIISControler
{
///
/// ProjectInstaller 的摘要说明。
///
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
public ProjectInstaller()
{
// 该调用是设计器所必需的。
InitializeComponent();
// TODO: 在 InitializeComponent 调用后添加任何初始化
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region 组件设计器生成的代码
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.DisplayName = "无垠IIS控制器";
this.serviceInstaller1.ServiceName = "*nIISControler";
this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic;
this.serviceInstaller1.AfterInstall+=new InstallEventHandler(serviceInstaller1_AfterInstall);
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
#endregion
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController("*nIISControler");
sc.Start(new string[]{"/url:http://www.5inet.net/checkIIS.asp","/timeout:10","/repeatTime:5"});
sc.Dispose();
}
}
}
#5
病毒
#6
是不是DefaultAppPool的设定问题呢
#7
楼主升级杀毒软件,查杀病毒!
#8
还有这种事。。。天哪!你可能中木马了吧。。或者中毒了。。。应该查一查。。。
使用命令行脚本 iisweb.vbs(存储在 systemroot\System32 中)使网站停止响应。站点的内容不变,但是在重新启动站点之前用户将无法访问它。
会不会有人用了它啊。。。。。
使用命令行脚本 iisweb.vbs(存储在 systemroot\System32 中)使网站停止响应。站点的内容不变,但是在重新启动站点之前用户将无法访问它。
会不会有人用了它啊。。。。。
#9
看看你的IIS日志存放的盘是不是满了???日志文件在SYstem32\LogFiles下面。
同时在正式使用的时候请禁用IIS日志,在调试的时候再打开。
同时在正式使用的时候请禁用IIS日志,在调试的时候再打开。
#10
up
#11
监测IIS,看看有什么异常
#12
主要是AppPool的问题,给应该程序单独新建一个AppPool,并设定好自己动回收的时间和周期;
我以前管理服务器的时候也经常出现这个问题!
我以前管理服务器的时候也经常出现这个问题!
#13
谢谢各位的热心帮助
最近我又分析了一下日志(自己在程序中作的,记录一些请求和响应信息)。发现在出问题的那几分钟里,网站并没有停止运行,日志中记录了当时接收到请求的时间和响应的时间,只不过在那段时间里处理的数量少一点。有没有可能是在中午时访问量过大而导致系统自动保护?
重装IIS是不太现实的,因为网站已经运行了,每天它都要处理大量工作,停下来重装IIS再做一些事情客户不会答应。
最近我又分析了一下日志(自己在程序中作的,记录一些请求和响应信息)。发现在出问题的那几分钟里,网站并没有停止运行,日志中记录了当时接收到请求的时间和响应的时间,只不过在那段时间里处理的数量少一点。有没有可能是在中午时访问量过大而导致系统自动保护?
重装IIS是不太现实的,因为网站已经运行了,每天它都要处理大量工作,停下来重装IIS再做一些事情客户不会答应。
#14
在我的日志中记录了关于请求和响应的信息以及它们的时间,从这些时间看来,在出问题的那几分钟里,IIS还是处理了请求的,但是通过IE访问时却没有任何信息,就象网站没有启动一样。
#15
welland(微蓝色):
请问在哪个地方设置 AppPool?
请问在哪个地方设置 AppPool?
#16
杀一下毒吧
#17
自己 up 一下,免得沉了
#18
up
#19
up again