簡體   English   中英

通過http處理程序提供javascript文件

[英]Serve javascript file via http Handler

我已經編寫了一個HTTP處理程序,根據傳遞給處理程序的值來輸出內容。 我正在嘗試擴展它,以便它也輸出flash,但是要這樣做,我還需要提供一個javascript文件。 javascript文件本身是另一個程序集中的嵌入式資源,因此,我嘗試以下操作:

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

    }

但是,我得到了錯誤:

無法將類型為“ Handlers.GenericContentHandler”的對象轉換為類型為“ System.Web.UI.Page”的對象。

有沒有辦法做到這一點? 我不能使用標准的src = / swfobject.js,因為腳本文件是嵌入式資源。

還是模塊會是更好的實現?

在此先感謝時髦

之所以收到InvalidCastException是因為您試圖將當前的處理程序(ashx)轉換為頁面類型。

我不確定您要在Flash情況下返回什么-我假設您可能想返回一個HTML頁面,該頁面中嵌入了Flash對象,並且標頭中包含js文件。 因此,您需要發出此類html,其中應包含指向js文件的鏈接。 現在,由於文件系統上沒有js,因此您的鏈接應指向另一個處理程序,該處理程序將從嵌入式程序集中提取js代碼並返回。 幸運的是,這樣的處理程序已經可用(WebResourceLoader),您可以在下面使用它來獲取所需的url:

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

竅門是,因為在通用處理程序中沒有客戶端腳本管理器,所以您只需創建一個新的頁面實例並使用它即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM