是否可以编写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调用该类?
感谢。
再见。
答案 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页面加载程序集和类。