2011-04-11 2 views
0

처리기에 전달 된 값에 따라 내용을 출력하는 HTTP 처리기를 작성했습니다. 나는 플래시 파일을 출력 할 수 있도록 확장하려고 노력하고있다. 그렇기 때문에 자바 스크립트 파일도 제공해야한다. 자바 스크립트 파일 자체가 다른 어셈블리에 포함 된 리소스, 그래서 나는 다음과 같은 노력하고 있어요 :에HTTP 처리기를 통해 javascript 파일 제공

유형의 개체를 캐스팅 할 수 없습니다 'Handlers.GenericContentHandler'내가 오류를 얻고있다, 그러나

public void ProcessRequest(HttpContext context) { 

     ((System.Web.UI.Page)context.CurrentHandler).ClientScript.RegisterClientScriptInclude("swfobject", ((System.Web.UI.Page)context.CurrentHandler).ClientScript.GetWebResourceUrl(typeof(MyAssembly.Load), "MyResourceAssembly.swfobject.js")); 

     context.Response.Write("Hello world"); 

    } 

을 'System.Web.UI.Page'를 입력하십시오.

이 문제를 해결할 방법이 있습니까? 스크립트 파일은 임베디드 리소스이기 때문에 표준 src =/swfobject.js 표준을 사용할 수 없습니다.

아니면 더 나은 구현이 될까요? 당신의 페이지 유형에 대한 현재 핸들러 (ASHX를) 변환하려고하기 때문에 사전 higgsy에서

덕분에

답변

1

당신은 InvalidCastException를 얻을.

플래시 케이스에서 반환 할 내용이 확실하지 않습니다. 헤더에 js 파일이 포함 된 플래시 객체가 포함 된 html 페이지를 반환하려고한다고 가정합니다. 따라서 js 파일에 대한 링크를 포함하는 html을 만들어야합니다. 자, 파일 시스템에 js가 없으므로 링크는 임베디드 어셈블리에서 js 코드를 추출하여 리턴하는 또 다른 핸들러를 가리켜 야합니다. 다행히 이러한 핸들러 (WebResourceLoader)을 사용할 수 이미 당신은 필요한 URL을 얻기 위해 아래에 그것을 사용할 수 있습니다

(new Page()).ClientScript.GetWebResourceUrl(typeof(MyAssembly.Load), "MyResourceAssembly.swfobject.js"); 

트릭은 일반 핸들러에서 클라이언트 스크립트 관리자가 없기 때문에, 당신은 단순히 새 페이지를 만들 수 있다는 것입니다 인스턴스로 사용하십시오.

+0

안녕 Vinay - 너는 절대적으로 옳다. 나는이 모든 잘못된 길을보고 있었다. 핸들러는 .NET의 영역 중 하나이다. 나는 많은 시간을 들여 작업하지 않았다. 고마워요 - 당신은 하나의 대답으로 내 문제를 해결했습니다. 우수한! – higgsy