用程序来代替IIS打开ASP.NET FOR C#

类别:.NET开发 点击:0 评论:0 推荐:

这是一个用程序来直接执行ASP.NET页面,一般我们是用IE打开的,现在我们用.NET中提供的功能来打开一个ASP.NET文件.执行后产生HTML代码。

我用一个控制台程序!在开始必须引用System.Web.dll这个名称空间,

代码:

using System;   
using System.Web;                          //Web引用

using System.Web.Hosting;   

//System.Web.Hosting命名空间提供在 Microsoft Internet 信息服务 (IIS) 之外的托管应用程序中承载 ASP.NET 应用程序的功能。


首先创建一个HOST类,用于处理Web请求

public class MyExeHost : MarshalByRefObject   //继承MarshalByRefObject  类
{
 public void ProcessRequest(String page)          //处理ASP.NET页面的请求
 {
  Console.WriteLine("---------HTML CODE-----------");
  HttpRuntime.ProcessRequest(new SimpleWorkerRequest(page, null, Console.Out));  

  }
}

 /*ProcessRequest方法的参数是一个HttpWorkerRequest类的实例,但是在Web名称空间下的HttpWorkerRequest是必须被继承的一个类,但是在System.Web.Hosting名称空间下有个实现了HttpWorkerRequest的类,叫SimpleWorkerRequest,SimpleWorkerRequest类的构造函数有2个,我选择了第一个。*/


public class App                  //控制台程序
{
 public static void Main(string[] args)   
 {
         string DocPath;                        //存放一个ASP.NET页面的路径
   
         MyExeHost Host;                    //声明MyExeHost 类的一个变量
  
          Host = (MyExeHost)ApplicationHost.CreateApplicationHost(typeof(MyExeHost),
          "/host",Environment.CurrentDirectory);
         /*ApplicationHost是System.Web.Hosting名称空间下的一个类,使得能够在Internet 信息服务 (IIS) 应用程序之外承载 ASP.NET 页。此类使宿主能够创建用于处理 ASP.NET 请求的应用程序域。CreateApplicationHost方法是:创建并配置用于承载 ASP.NET 的应用程序域。第一个参数是:创建一个用于请求ASP.NET的类也就是我们在之前创建的MyExeHost 类,第二个参数是:应用程序域的虚拟目录;例如/myapp,一般这个路径就代表引用程序的目录,第三个参数的意思是:应用程序域的物理目录,这个非常重要!设置不对就运行不起来,这个就是本应用程序的物理路径,在这个程序对ASP.NET处理时会调用这个路径下的 bin目录,里面的Web应用程序,也就是我们的 本程序 */
         DocPath = Console.ReadLine();           //读取你输入的一个ASP.Net页面,页面如果在本应用程序路径里就直接打文件名,否则打出全路径。
         Host.ProcessRequest(DocPath);           //将页面传给ProcessRequest  处理 
  
         Console.ReadLine(); 
 }
}
     运行后显示执行ASP.NET页面后产生的HTML,你可以在加上IO下入文件用IE打开(哈哈,我就不写了)

注意的是:生成后在应用程序下必须在创建一个BIN目录,里面将本应用程序考到BIN目录下!在去运行生成的程序,一定要保证所运行的程序下有个BIN目录里面有本程序。

WINXP + SP1  +  VS2003.NET 编译通过!

有不对的请指点

本文地址:http://com.8s8s.com/it/it44937.htm