2011-04-11 183 views
0

我已經編寫了一個HTTP處理程序,根據傳遞給處理程序的值輸出內容。我試圖擴展它,以便輸出閃存,但是爲了做到這一點,我還需要提供一個JavaScript文件。 JavaScript文件本身是另一個程序集中嵌入的資源,所以我嘗試以下操作:通過http服務javascript文件Handler

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,因爲腳本文件是嵌入式資源。

或者模塊是一個更好的實現?

在此先感謝 higgsy

回答

1

你得到InvalidCastException,因爲你正在試圖當前的處理程序(ASHX)轉換爲網頁類型。

我不確定你想在閃回的情況下返回什麼 - 我假設你可能想要返回一個HTML頁面,其中嵌入了flash對象,並且包含在頭文件中的js文件。所以你需要發佈這樣的HTML,你會包括鏈接到JS文件。現在,由於您的文件系統上沒有js,您的鏈接應該指向另一個處理程序,它將從嵌入程序集中提取js代碼並將其返回。幸運的是,這樣的處理器已經可以(WebResourceLoader),你可以用它下面來得到所需的網址:

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

技巧是,因爲你沒有在通用處理客戶端腳本經理,您只需創建一個新頁面實例並使用它。

+0

嗨Vinay - 真的,你是對的,我正在看着這一切錯誤的方式 - 處理程序是.NET的一個領域,我沒有花很多時間處理。非常感謝 - 你在一個答案中解決了我的問題。優秀! – higgsy 2011-04-11 14:00:09