Serve javascript file via http Handler

守給你的承諾、 提交于 2019-12-02 20:02:32

问题


I've written a HTTP Handler that outputs content depending on values passed to the handler. I am trying to extend it so that it outputs flash aswell, however to do so I need to also serve a javascript file. The javascript file itself is an embedded resource in another assembly, so I am trying the following:

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

    }

However, I am getting the error:

Unable to cast object of type 'Handlers.GenericContentHandler' to type 'System.Web.UI.Page'.

Is there a way of acheiving this? I cant use a standard src=/swfobject.js because the script file is an embedded resource.

Or would a module be a better implementation?

Thanks in advance higgsy


回答1:


You get InvalidCastException because your are trying to convert your current handler (ashx) to the page type.

I am not certain what you want to return in flash case - I am assuming that you probably want to return an html page with flash object embedded within and with js file included in header. So you need to emit such html where you would include link to the js file. Now, as you don't have js on file system, your link should point to yet another handler that would extract the js code from embedded assembly and return it. Luckily such handler is already available (WebResourceLoader) and you can use it below to get the needed url:

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

Trick is that because you don't have client script manager in generic handler, you simply create a new page instance and use that.



来源:https://stackoverflow.com/questions/5621391/serve-javascript-file-via-http-handler

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!