2016-05-08 251 views
4

重新启动IIS网站,我正在寻找一种方法来从一个MVC控制器重新开始(从管理页面) 当前运行的网站,用C#.NET从MVC控制器

为什么我需要它? 我有一个网站的错误,但它只发生在网站运行一个随机的时间,这使得它真的很难找到, 同时我仍然需要一个远程的方式来从我的手机快速重新启动,如果需要的网站。

+0

你一定要明白,如果它是在相同的应用程序托管了这会重新启动一切,包括管理页面? –

+0

你尝试过什么吗? – yaakov

+0

是的,但我需要一些东西 – CMS

回答

2

ASP.NET应用程序可能会重新启动,因为真正有很多原因。它可能比你想象的更频繁地发生。 ASP.NET web应用程序 将因以下原因重新启动:

  • Web.Config文件中的更改。更改任何参数,添加空格字符,甚至更改文件的修改日期都将导致重新启动应用程序。
  • 更改machine.config,就像web.config一样。
  • 更改/ bin文件夹。如果您添加,更新或删除/ bin文件夹中的任何文件,应用程序将重新启动。
  • 更改App_Code文件夹。在App_Code中添加,删除或编辑类将导致应用程序重新启动。
  • 更改Global.asax文件,就像在web.config中一样。
  • 变化App_LocalResources文件夹
  • 变化App_GlobalResources文件夹
  • 变化App_WebReferences夹
  • 变化资料配置
  • 达成汇编限制,在machine.config文件与numRecompilesBeforeAppRestart定义。默认值是15. ASP.NET监视文件中的任何更改。当某些数字(默认为15)被更改时,Web应用程序会自动重新启动 。这是为了节省服务器上的内存。在 动态生成文件的一些网站,这可能会导致 频繁重新启动。
  • 防病毒软件更改文件的修改日期。防病毒程序扫描文件,如Web.config或Global.asax。某些防病毒程序 更改这些文件的修改日期,并导致频繁重新启动 ,这会降低网站性能。
  • IIS重新启动,所有网站也将重新启动。
  • 更改物理路径到网络应用程序
  • 由于不活动而导致IIS回收的网站(默认20分钟)。如果网站没有访问者,IIS将从内存中卸载它以节省 资源。当下一位访问者 到来时,申请将再次开始。

这是我通常会重新启动应用程序。

  1. 从代码中调用UnloadAppDomain,尽管需要完全信任权限才能这样做。

    System.Web.HttpRuntime.UnloadAppDomain()

  2. 刻意改变gloabl.asax或web.config文件的修改日期属性

    File.SetLastWriteTimeUtc(MapPath("~/global.asax"), DateTime.UtcNow); File.SetLastWriteTimeUtc(MapPath("~/web.config"), DateTime.UtcNow);

3

创建一个.bat文件名IISresart.bat

,并在这里面我写

iisreset 

IISRESET停止,然后启动IIS。

而且ASP.net我写

它重新启动IIS。

注意:我在asp.net web窗体上测试过它,我也应该使用MVC。 而对于没有窗口添加此行processInfo.CreateNoWindow = true;

+0

谢谢我尝试它,但我也会尝试在评论中的其他选项可能会对我更好, – CMS

+0

让我们知道它适用于asp.net MVC @CMS –

+0

yup会做!谢谢 – CMS

3

当我想从应用程序中注销所有用户时,我使用的一个非常简单的解决方案是通过从bin文件夹内创建/删除(如果存在)一个虚拟.dll文件。

你能说出任何你想要的这个dll文件,但通过创建/删除将重新启动整个应用程序(池),并解决您的问题..

这个解决方案的好处是,你不需要您的Web应用程序的特殊权限。

+1

我喜欢那样!这就是所谓的思维开箱 – CMS

+0

这dummy.dll应该是什么?我可以把一个空白文件结尾.dll吗? – CMS

+0

刚刚创建任何文件(文本文件)与.dll扩展名可以说dum.dll ... 如果dum.dll存在然后删除它... :) –