用程序来代替IIS打开ASP.NET
这是一个用程序来直接执行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 编译通过!
有不对的请指点