前言:上周出差支持二次开发, 发现二开现场开发环境用的是IIS进行开发和调试,重启IIS服务器成本很大,而且本人的是超级本只装了VS没装数据库和产品。按二开他们目前的模式, 把Cloud产品+VS开发环境+数据库都装在一台机器上,调试时附加IIS调试(超级本很吃力啊)。安装产品也是时间成本, 有时还会遇到打了补丁和没打补丁的环境下跟踪问题,升级本机环境还好,如果要降级去跟踪低版本的问题不是得重装Cloud产品?所以作为一个有理想有效率的程序猿来说, 这种方式是不适合的。
我们知道VS内置了ASP.NET Web 服务器(WebDev.WebServer40), 这里我们采用的是这种方式。
....此处省略一万字,废话不多说,经过一番研究,发现WebDev.WebServer
1.只能加载32位应用程序集,2.只能加载IIS6的配置文件。
我们产品所有组件都是编译成Any CPU的, 所以不存在32位和64位的问题, 如果提示无法加载OracleAccess.dll请在32位机安装Cloud产品里取该组件(可能已经有前辈告诉你怎么从安装包里取了这个组件了),这个问题主要是WebDev.WebServer的性质1导致的,我还在一个环境中遇到过提示缺少另一组件的(Kingdee.BOS.MC.ServiceFacade.ServicesStub这个一般是管理中心站点才会用到,暂没跟踪原因),不废话少啥就加啥。
因为产品标配系统的Web服务器一般都是IIS7了, 所以你安装完产品后默认的都是使用IIS7的web.config配置文件,Cloud产品下就有Web.IIS6.config,把它重命名为Web.config就可以使用,IIS6和IIS7的主要区别是httpModules和httpHandlers的区别,建议你把原IIS7的配置文件修改为IIS6的,因为Web.IIS6.config好像产品中没怎么维护,有些东西会少了。
好吧, 我们说完原理了, 现在讲一下主要步骤
主要步骤:
1.从一个安装好的产品中, 拷贝WebSite业务站点目录。
2.把里面的配置文件修改为IIS6的web.config配置。(上述)
3.编译脚本文件启用站点布署:
taskkill /F /IM "WebDev.WebServer40.EXE"
CD /D "C:\Program Files\Common Files\microsoft shared\DevServer\11.0"
START WebDev.WebServer40.EXE /port:8888 /path:"E:\ZCode\WebSite" /vpath:"/K3Cloud"
START iexplore.exe "http://localhost:8888/K3Cloud/Silverlight/IndexSL.aspx"
保存为startIndex.bat脚本(运行参数请按真实环境填写),双击运行站点。
需要注意的是管理中心注册账套时, [i]如果数据库服务器在本机不要使用.或者localhost的方式指定本机数据库服务器[/i], 因为平台可能不会解析它,而当你的业务站点在其它机器上时会导致连接串无效。(如果IP一般不变建议使用IP, 或者使用机器名指定服务器地址)
PS:从VS2010 SP1 Beta版本开始, 我们还知道MS提供了一个iis express的快速布署的轻量级服务器,命令行启动的方式暂不讲你可以把拷贝的站点目录添加到VS项目中, 然后右键使用iis express的方式启用, 由于它是优化的IIS 7.5的免费版, 所以它能直接识别IIS7的配置文件。
后续:基于这种方式,可参考我们内部的开发环境布署开发环境,二次开发团队只需布署一台公共开发服务器(数据库+Cloud产品), 开发人员只需安装VS,从该公共服务器上拷贝组件进行同步开发(该服务器也可以是构建最新组件的服务器,有人维护和安装每天最新布署包获取最新数据库账套)。
startIndex.bat可以配置成VS的扩展菜单项,可通过快捷键快速启动站点。
推荐阅读