2009-07-10 3 views
1

System.Web.UI.Page를 작성하고 어셈블리에 저장할 수 있습니까? 페이지를 어떻게 호출 할 수 있습니까?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을 사용하는 것이 좋습니다.

어셈블리 등록은 어셈블리를 등록하는 것과 같습니다. 코드 파일에 해당 클래스를 정의하고 bin 디렉토리에 컴파일 된 DLL을 가지고 있습니다.

그런 다음, 예를 들어, 당신이 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의 난 아직도 Assemblie을 reflaction를 사용하여로드 httpHandlers 섹션

<add verb="POST,GET,HEAD" path="WRC/*" type="MyProject.Code.MyHandlerFactory, MyProject"/> 
+0

매우 흥미 롭습니다, 감사합니다! – Neo1975

0

당신이 뭘하고 있는지 확실하지 않습니다. 배포 프로젝트를 설정하면 모든 dll 파일을 단일 어셈블리로 병합 할 수있는 설정이 있습니다. 너가 원하는게 그거야? 어느 쪽이든, 여러 aspx 페이지에 대해 동일한 코드를 클래스 뒤에 재사용하려는 경우 변경해야하는 페이지 선언문 (aspx의 첫 번째 코드 행)이됩니다.

0

몇 가지 옵션 1. 시각적 스튜디오 참조의 일부로이 어셈블리를 참조 할 수 있습니다. 2. relfection을 사용하여 테스트 ASAPX 페이지에서 어셈블리와 클래스를로드합니다.

+0

이 같은 것을 포함 할 것이다, 하지만 내 문제는 IIS가 특정 클래스를 호출하도록하는 것입니다. – Neo1975

+0

IIS는 어셈블리를로드하지 않습니다. URL 패턴을 처리하고 원하는 페이지를 반환하도록 HTTPhandler 팩토리를 등록해야합니다. Crude way는 test.aspx에서 다른 페이지 클래스의 응답을 렌더링하는 것일 수 있습니다. –