C#使用Windows Service 启动和关闭IISExpress

(未完成)
最近的项目使用到IISExpress,写了一个命令行,双击启动,但是无奈,启动之后会留一个命令行窗口,稍微不小心就关掉了,而且云服务器运行多个IISExpress 窗口很多实在烦人,写一个小程序把IISExpress 使用windows service管理起来

主要过程

1、使用C# 创建windows 服务
2、使用命令行交互启动 IISExpress
3、处理服务关闭事件
4、处理IISExpress异常退出
5、写配置文件,按照配置文件启动IISExpress
6、写日志,记录执行情况

0.环境配置

1、下载IISExpress 安装
https://www.microsoft.com/zh-cn/download/details.aspx?id=34679
根据你的系统选择版本,一般是64位版本

2、编写配置脚本
使用IISExpress默认的脚本进行修改,把下面的文件复制出来,放到项目目录中作为模版

C:\Program Files\IIS Express\config\templates\PersonalWebServer\applicationhost.config 

设置应用程序池
找到 节,在里面增加

"应用程序池名称" enable32BitAppOnWin64="true" managedRuntimeVersion="v4.0"  CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" managedPipelineMode="Integrated" autoStart="true"/>

设置网站
找到 节,修改里面的配置

<sites>
    <site name="WebSite1" id="1" serverAutoStart="true">
        <application path="/">
            <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
        application>
        <bindings>
            <binding protocol="http" bindingInformation=":8080:localhost" />
        bindings>
    site>
    <siteDefaults>
        <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
        <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
    siteDefaults>
    <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
    <virtualDirectoryDefaults allowSubDirConfig="true" />
sites>

关于applicationHost.config 文件的详细介绍:
http://www.cnblogs.com/IPrograming/archive/2013/05/26/Configuration_IIS_Express.html

其中%IIS_SITES_HOME% 是环境变量,可以另起一个,比如%MY_WEBSITE_HOME%,然后在系统环境变量中设置项目所在目录

C#使用Windows Service 启动和关闭IISExpress_第1张图片

(写在系统变量里或者Administrator用户变量里都可以)

启动IISExpress
打开命令行,执行命令启动IISExpress

"C:\Program Files\IIS Express\IISExpress" /config:%MY_WEBSITE_HOME%\applicationhost.config

注意一下,由于IISExpress的默认安装路径有空格,需要用引号括起来。
使用浏览器访问一下配置的端口,按照上面的配置是8080,正常的话能看到自己的页面了

1、使用VS创建window 服务

参考文章:
http://blog.csdn.net/yysyangyangyangshan/article/details/10515035
http://www.cnblogs.com/bluestorm/p/3510398.html

2、加入命令行脚本

参考文章:
http://blog.csdn.net/u013151336/article/details/51301779
http://www.cnblogs.com/babycool/p/3570648.html

执行的命令就是上面提到的启动IIS的命令

3、处理服务关闭事件

服务停止的时候同时关闭IISExpress
在windows服务的OnStop()事件中,给命令行发送按键q

4、处理IISExpress结束事件

注册命令行对象 OnExited的事件,当IISExpress关闭后,结束windows服务

5、写配置文件

写一个配置文件,可以更改IISExpress目录环境变量的名称

6、写日志记录执行情况

使用文本文件记录服务的启动、关闭、命令行输出的内容。写日志可以用 log4net
http://www.cnblogs.com/wangsaiming/archive/2013/01/11/2856253.html

你可能感兴趣的:(IISExpress)