(未完成)
最近的项目使用到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
设置应用程序池
找到 <applicationPools> 节,在里面增加
<add name="应用程序池名称" enable32BitAppOnWin64="true" managedRuntimeVersion="v4.0" CLRConfigFile="%IIS_BIN%\config\templates\PersonalWebServer\aspnet.config" managedPipelineMode="Integrated" autoStart="true"/>
设置网站
找到 <sites> 节,修改里面的配置
<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%,然后在系统环境变量中设置项目所在目录
(写在系统变量里或者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