ASP.NET和动态页面

时间:2009-07-10 13:56:21

标签: asp.net iis dynamic

是否可以编写System.Web.UI.Page并存储在程序集中? 我怎样才能让iis调用该页面?

所以我会深入...

我正在写一个类似的课程:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
using System.Reflection;
using WRCSDK;
using System.IO;

public partial class _Test : System.Web.UI.Page
{
    public _Test()
    {
        this.AppRelativeVirtualPath = "~/WRC/test.aspx";
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("You are very lucky!!!");
    }

}

将其存储到程序集中。

所以现在我如何注册该组合并获得http://localhost/test.aspx调用该类?

感谢。

再见。

3 个答案:

答案 0 :(得分:1)

您需要使用HttpHandler或HttpModule来执行此操作。

注册程序集就像注册任何程序集一样 - 只需在代码文件中定义该类,并将已编译的DLL放在bin目录中。

然后,作为示例,您可以创建IHttpHandlerFactory:

public class MyHandlerFactory : IHttpHandlerFactory
{
  public IHttpHandler GetHandler(HttpContext context, ........)
  {
     // This is saying, "if they requested this URL, use this Page class to render it"
     if (context.Request.AppRelativeCurrentExecutionFilePath.ToUpper() == "~/WRC/TEST.ASPX")
     {
       return new MyProject.Code._Test();
     }
     else
     {
       //other urls can do other things
     }

  }
  .....
}

您的web.config将在httpHandlers部分

中包含类似的内容
  <add verb="POST,GET,HEAD" path="WRC/*" type="MyProject.Code.MyHandlerFactory, MyProject"/>

答案 1 :(得分:0)

不确定你在这之后是什么。如果您设置了一个部署项目,则有一个设置可以将所有dll文件合并到一个程序集中。那是你要的吗?无论哪种方式,如果你想在几个aspx页面的类后面重用相同的代码,那么你必须改变页面声明(aspx中的第一行代码)。

答案 2 :(得分:0)

几个选项 1.您可以将此程序集称为可视工作室参考的一部分 2.使用relfection从测试ASAPX页面加载程序集和类。