Подавать файл javascript через http-обработчик - PullRequest
0 голосов
/ 11 апреля 2011

Я написал обработчик HTTP, который выводит содержимое в зависимости от значений, переданных обработчику.Я пытаюсь расширить его так, чтобы он выводил flash aswell, однако для этого мне нужно также предоставить файл 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");

    }

Однако я получаю сообщение об ошибке:

Невозможно привести объект типа 'Обработчики.GenericContentHandler 'для ввода' System.Web.UI.Page '.

Есть ли способ добиться этого?Я не могу использовать стандартный файл src = / swfobject.js, потому что файл сценария является встроенным ресурсом.

Или модуль будет лучшей реализацией?

Заранее спасибо, Хиггси

1 Ответ

1 голос
/ 11 апреля 2011

Вы получаете InvalidCastException, потому что вы пытаетесь преобразовать ваш текущий обработчик (ashx) в тип страницы.

Я не уверен, что вы хотите вернуть во флэш-случае - я предполагаю, что вы, вероятно, хотите вернуть html-страницу со встроенным флэш-объектом и с файлом js, включенным в заголовок.Поэтому вам нужно создать такой HTML-файл, в который вы бы включили ссылку на файл js.Теперь, поскольку у вас нет js в файловой системе, ваша ссылка должна указывать на еще один обработчик, который извлекал бы js-код из встроенной сборки и возвращал его.К счастью, такой обработчик уже доступен (WebResourceLoader), и вы можете использовать его ниже для получения необходимого URL:

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

Хитрость заключается в том, что, поскольку у вас нет диспетчера клиентских скриптов в универсальном обработчике, вы просто создаетеновый экземпляр страницы и использовать его.

...