2009-07-10 59 views
1

是否可以编写System.Web.UI.Page并存储在程序集中? 如何让iis致电该页面?ASP.NET和动态页面

所以我会去深深...

我正在写一类这样的:

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!!!"); 
    } 

} 

被存储到一个程序。

那么现在我怎样才能注册这个assemply并获得http://localhost/test.aspx调用该类?

谢谢。

再见。

回答

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"/> 
0

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

0

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

+0

我仍然使用反光标识和加载Assemblie,但我的问题是要告诉IIS调用一个特定的类。 – Neo1975 2009-07-10 14:36:20

+0

IIS不会加载程序集;你需要注册HTTPhandler工厂来处理url模式并返回你想要的页面。粗略的方法可能是在test.aspx中显示来自其他页面类的响应。 – 2009-07-11 05:03:17