如何通过asp.net重启iis

时间:2020-12-17 03:30:32
如何在一个aspx页面中点击按钮实现iis自动重启。
Process p = new Process();

p.StartInfo.FileName = "iisreset";

这种方式是不行的,只有应用程序可以使用

23 个解决方案

#1


假如网页有足够权限执行倒是可以做到的。但是为什么要通过网页来复位呢?IIS服务本来就不应该手动重启。一般可以考虑回收应用程序池。

#2


up!

#3


HttpRuntime.UnloadAppDomain(); 
试试,

#4


Process p = new Process(); 

p.StartInfo.FileName = "iisreset/RESTART";

#5


另,试一下:

实现代码如下:

using System.Diagnostics; 
using System.ServiceProcess; 

ServiceController sc = new ServiceController("iisadmin"); 
if (sc.Status == ServiceControllerStatus.Running) 

sc.Stop();//停止 

// ServiceController sc = new ServiceController("iisadmin"); 
// sc.Start();//启动 

Process.Start("iisreset");//重启 

主要是Diagnostics、ServiceProcess量个命名空间

#6


jf

#7


引用 5 楼 liujiayu10 的回复:
另,试一下: 

实现代码如下: 

using System.Diagnostics; 
using System.ServiceProcess; 

ServiceController sc = new ServiceController("iisadmin"); 
if (sc.Status == ServiceControllerStatus.Running) 

sc.Stop();//停止 

// ServiceController sc = new ServiceController("iisadmin"); 
// sc.Start();//启动 

Process.Start("iisreset");//重启 

主要是Diagnostics、ServiceProcess量个…


提示拒绝访问
异常常详细信息: System.ComponentModel.Win32Exception: 拒绝访问。
InvalidOperationException: 无法打开计算机“.”上的 iisadmin 服务。]

#8


b/s也可以,以前我做过。
一会给你找找

#9


Mark 

#10


回帖是一种美德!每天回帖即可获得 10 分可用分!

#11


引用 8 楼 lovexiaoxiao 的回复:
b/s也可以,以前我做过。 
一会给你找找

真的可以?

#12


mark

#13


我觉得要给 aspnet用户足够的权限.

所有的asp.net 页面都是在appdomain里运行的,默认情况下,运行应用的是aspnet 帐号,如果这个帐号有权限,它就可以做.
查询重启iis等操作需要的权限,然后给aspnet用户赋予相应的权限,应该是可以实现的.

#14


mark

#15


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RestartWeb.aspx.cs" Inherits="MainSuper.WebSites.Tools.RestartWeb"
    Buffer="false" EnableViewState="false" EnableSessionState="False" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <%
            if (Request["restart"] == null) {
                Response.Write("web stoping...<br />");
                HttpRuntime.UnloadAppDomain();
                Response.Write("web stoped.<br />");
                System.Threading.Thread.Sleep(1000);
                Response.Write("web starting...<br />");
                try {
                    System.Net.WebRequest.Create(Request.Url + "?restart=false").GetResponse();
                    Response.Write("web started.<br />");
                } catch (Exception ex) {
                    Response.Write("error:" + ex.Message);
                }                        
            }
        %>
    </div>
    </form>
</body>
</html>

#16


如果你只是想回收这个ASP.NET相关的IIS进程,试试看这个里面的方法,简单而且安全,

http://dotnetyuppie.com/2008/01/06/programmatically-recycling-your-aspnet-application/

#17


http://dotnetyuppie.com/2008/01/06/programmatically-recycling-your-aspnet-application/

仅仅回收执行这个ASP.NET程序的IIS进程。

#18


http://dotnetyuppie.com/2008/01/06/programmatically-recycling-your-aspnet-application/

仅仅回收执行这个ASP.NET应用的IIS进程的话,这个方法就够了。

#19


回帖是一种美德!每天回帖即可获得 10 分可用分!

#20


up..我也在找相关信息,关注

#21


//我在本机用VS(B/S)测试,可以重启IIS
using System.Diagnostics;
Process.Start("iisreset");

#22


该回复于2011-12-26 15:35:40被版主删除

#23


引用 21 楼  的回复:
//我在本机用VS(B/S)测试,可以重启IIS
using System.Diagnostics;
Process.Start("iisreset");


我在VS2008中测试,确实可以重启IIS。但是发布到IIS上,就不报错,也不重启IIS。
请教。我的邮箱ckl200@163.com

#1


假如网页有足够权限执行倒是可以做到的。但是为什么要通过网页来复位呢?IIS服务本来就不应该手动重启。一般可以考虑回收应用程序池。

#2


up!

#3


HttpRuntime.UnloadAppDomain(); 
试试,

#4


Process p = new Process(); 

p.StartInfo.FileName = "iisreset/RESTART";

#5


另,试一下:

实现代码如下:

using System.Diagnostics; 
using System.ServiceProcess; 

ServiceController sc = new ServiceController("iisadmin"); 
if (sc.Status == ServiceControllerStatus.Running) 

sc.Stop();//停止 

// ServiceController sc = new ServiceController("iisadmin"); 
// sc.Start();//启动 

Process.Start("iisreset");//重启 

主要是Diagnostics、ServiceProcess量个命名空间

#6


jf

#7


引用 5 楼 liujiayu10 的回复:
另,试一下: 

实现代码如下: 

using System.Diagnostics; 
using System.ServiceProcess; 

ServiceController sc = new ServiceController("iisadmin"); 
if (sc.Status == ServiceControllerStatus.Running) 

sc.Stop();//停止 

// ServiceController sc = new ServiceController("iisadmin"); 
// sc.Start();//启动 

Process.Start("iisreset");//重启 

主要是Diagnostics、ServiceProcess量个…


提示拒绝访问
异常常详细信息: System.ComponentModel.Win32Exception: 拒绝访问。
InvalidOperationException: 无法打开计算机“.”上的 iisadmin 服务。]

#8


b/s也可以,以前我做过。
一会给你找找

#9


Mark 

#10


回帖是一种美德!每天回帖即可获得 10 分可用分!

#11


引用 8 楼 lovexiaoxiao 的回复:
b/s也可以,以前我做过。 
一会给你找找

真的可以?

#12


mark

#13


我觉得要给 aspnet用户足够的权限.

所有的asp.net 页面都是在appdomain里运行的,默认情况下,运行应用的是aspnet 帐号,如果这个帐号有权限,它就可以做.
查询重启iis等操作需要的权限,然后给aspnet用户赋予相应的权限,应该是可以实现的.

#14


mark

#15


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RestartWeb.aspx.cs" Inherits="MainSuper.WebSites.Tools.RestartWeb"
    Buffer="false" EnableViewState="false" EnableSessionState="False" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <%
            if (Request["restart"] == null) {
                Response.Write("web stoping...<br />");
                HttpRuntime.UnloadAppDomain();
                Response.Write("web stoped.<br />");
                System.Threading.Thread.Sleep(1000);
                Response.Write("web starting...<br />");
                try {
                    System.Net.WebRequest.Create(Request.Url + "?restart=false").GetResponse();
                    Response.Write("web started.<br />");
                } catch (Exception ex) {
                    Response.Write("error:" + ex.Message);
                }                        
            }
        %>
    </div>
    </form>
</body>
</html>

#16


如果你只是想回收这个ASP.NET相关的IIS进程,试试看这个里面的方法,简单而且安全,

http://dotnetyuppie.com/2008/01/06/programmatically-recycling-your-aspnet-application/

#17


http://dotnetyuppie.com/2008/01/06/programmatically-recycling-your-aspnet-application/

仅仅回收执行这个ASP.NET程序的IIS进程。

#18


http://dotnetyuppie.com/2008/01/06/programmatically-recycling-your-aspnet-application/

仅仅回收执行这个ASP.NET应用的IIS进程的话,这个方法就够了。

#19


回帖是一种美德!每天回帖即可获得 10 分可用分!

#20


up..我也在找相关信息,关注

#21


//我在本机用VS(B/S)测试,可以重启IIS
using System.Diagnostics;
Process.Start("iisreset");

#22


该回复于2011-12-26 15:35:40被版主删除

#23


引用 21 楼  的回复:
//我在本机用VS(B/S)测试,可以重启IIS
using System.Diagnostics;
Process.Start("iisreset");


我在VS2008中测试,确实可以重启IIS。但是发布到IIS上,就不报错,也不重启IIS。
请教。我的邮箱ckl200@163.com