2009-07-10 139 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