chinaab 发表于 2015-8-12 13:55:24

如何在没有IIS的环境中运行Web程序和Web Service[原创]

  作者:lhxhappy   
原文链接:http://www.iyunv.com/lhxhappy/archive/2008/08/04/1259503.html
  转载请注明出处。

最近开发了一个网络版的程序,程序的UI是WinForm的,数据交互全部采用Web Service 报表采用 Web Form 嵌入到WinForm 中,
  这种构架的程序必须得有IIS服务器支持,否则整个程序都无法运行,老总最近突然发奇想,说是要我们封装个单机版的程序出来拿去推广
  封装到是简单,可是多数单机客户都不会安装IIS,即使安装了,也基本不会配置啊~!程序离开了IIS又运行不了,这可怎么是好呢??
  今天在编译Web程序的时候突然受到了启发,Vs2005 以后的版本编写Web程序的时候,可以在没有IIS的环境中编译和调试,每次调试
  的时候都会运行起一个 Asp.net Development Server 的服务,这个服务和IIS类似,可以说是IIS的简化版,虽然不如IIS完善和成熟但是
  用于提供一般的IIS服务已经足够了,但是必须要按照了Vs2005或者vs2008的计算机才能使用Asp.net Development Server 来提供IIS服
  务,不过呢不用担心,只要拷贝几个关键的文件,在没有安装开发环境的计算机上同样也是可以运行Asp.net Development Server 。
  
  废话不多说了下面让我们来看看怎么样,把Asp.net Development Server 的服务启动起来
  第一种方式
  通过命令提示行:
  1、开始--运行--输入 CMD 回车
  2、在命令提示行中 输入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer /port:38438 /path:"F:\Work\inetpub\wwwroot\lhx" /vpath:"/lhx"
  参数说明:/port: 指定Asp.net Development Server 提供服务的端口号 ,范围在1-65535之间任意一个未使用的端口。
  /path:存放Web程序的物理路径
  /vpath:虚拟路径 (可选)默认路径就是"/"
  3、打开IE浏览器通过URL:http://localhost:38438/lhx就可访问到你的网站了~!(怎么样方便吧?)
  
  第二种方式:
  通过WinForm(C#)来启动这个服务
  实现方法如下
  private void RunServer()
  {
  Process P = new Process();
  p.StartInfo.FileName = "cmd.exe";         //设定程序名
  p.StartInfo.Arguments = "/c" + "C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\WebDev.WebServer /port:38438 /path:\"F:\\Work\\inetpub\\wwwroot\\lhx\" /vpath:\"/lhx\"";    //设定程序行执行参数
                p.StartInfo.UseShellExecute = false;      //关闭Shell的使用
                p.StartInfo.RedirectStandardInput = true;   //重定向标准输入
                p.StartInfo.RedirectStandardOutput = true;//重定向标准输出
  p.StartInfo.RedirectStandardError = true;   //重定向错误输出
  p.StartInfo.CreateNoWindow = true;          //设置不显示窗口

                p.Start();
  }
  
  另外再没有安装VS2005或者Vs2008的计算机上怎么才能使用Asp.net Development Server 呢?
  1、从安装了Vs2005或者Vs2008开发环境的计算机上拷贝WebDev.WebServer .exe文件
  Vs2005的路径是C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer .exe
  VS2008的WebDev.WebServer .exe在C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer .exe
  
  2、光拷贝WebDev.WebServer .exe在没有开发环境的计算机上还不能成功运行Asp.net Development Server,还差一个叫做WebDev.WebHost.dll的文件
  Vs2005的环境中这个文件保存在C:\Windows\assembly\GAC_32\WebDev.WebHost\8.0.0.0__b03f5f7f11d50a3a路径下
  Vs2008的环境中这个文件保存在C:\Windows\assembly\GAC_32\WebDev.WebHost\9.0.0.0__b03f5f7f11d50a3a路径下
  我们先要从有开发环境的计算机中把这个文件拷贝出来,然后再把这个文件拷贝到没有开发环境的计算机的相同的路径下Asp.net Development Server 就可以
  用上面的方法正常启动了。
  要想拷贝WebDev.WebHost.dll必须在命令提示行中用Dos命令进行
  步骤如下:
  首先:开始--运行--输入 CMD 调出命令提示行
  然后:在命令提示行中执行Dos命令 copy C:\Windows\assembly\GAC_32\WebDev.WebHost\8.0.0.0__b03f5f7f11d50a3a\WebDev.WebHost.dll C:\
  这样WebDev.WebHost.dll 文件就被复制到了C盘根目录下了。
  最后:将WebDev.WebServer .exe和WebDev.WebHost.dll文件拷贝到没有安装开发环境的计算机中,然后建立一个文本文件,将下面的内容复制到文本文件中保存,
  md %SystemRoot%\assembly\GAC_32\WebDev.WebHost\8.0.0.0__b03f5f7f11d50a3a
xcopy WebDev.WebHost.dll /y %SystemRoot%\assembly\GAC_32\WebDev.WebHost\8.0.0.0__b03f5f7f11d50a3a
  
  将刚才文本文件的文件名改为copy.bat,然后将copy.bat拷贝到保存WebDev.WebHost.dll的文件夹中,然后运行 copy.bat文件。
  
  OK,现在允许WebDev.WebServer .exe发现服务已经可以正常启动了~!
  
  简单吧??作为轻量级的IIS Asp.net Development Server可是很不错的哦~!
  
页: [1]
查看完整版本: 如何在没有IIS的环境中运行Web程序和Web Service[原创]