2011-04-11 22 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