WebResource.axd пуст или не найден - PullRequest
10 голосов
/ 08 апреля 2009

Я пытаюсь экспортировать управляющую библиотеку в .dll для использования другими разработчиками в офисе.

Решение, которое я изначально создал, выглядит следующим образом:

Решение 1:
- Mri.Controls (библиотека классов)
- Mri.FmTool (веб-приложение)

Mri.FmTool ссылается на Mri.Controls.

Внутри Mri.Controls у меня есть несколько веб-ресурсов javascript. Mri.FmTool, кажется, отлично читает WebResources, все мои веб-ресурсы javascript отображаются так, как они должны быть, когда запущено веб-приложение Mri.FmTool.

Итак, теперь я пытался создать простое решение для потребления Mri.FmTool

Решение 2:
- Mri.ConsumerTest (веб-приложение)

Я взял последнюю версию Mri.Controls.dll и добавил ее в качестве ссылки на приложение Mri.ConsumerTest. Все элементы управления Mri.Controls работают внутри Mri.ConsumerTest. Intellisense работает, компилируется, проблем нет.

Однако при его запуске большинство файлов WebResource.axd пустые, просто пустые. Один файл WebResource.axd не пустой, он просто говорит: «Этот ресурс не найден».

Вот свойства файлов javascript внутри окна Properties:
Действие построения: «встроенный ресурс»
Копировать в выходной каталог: «Копировать всегда»

Какой шаг я пропускаю?

Ответы [ 3 ]

3 голосов
/ 08 апреля 2009

Возможно, вам не хватает атрибута [assembly: WebResource ("YourNameSpace.YourFile.js", "text / javascript")]. WebResource.axd нуждается в этом атрибуте. Вы можете проверить эту статью KB для дополнительной информации по этому вопросу.

2 голосов
/ 13 апреля 2009

Я заметил, что мои CSS-файлы WebResource загружались правильно, но Javascript не загружался в WebResource в новом решении.

Итак, вместо использования System.Web.UI. ClientScriptManager , используемого для регистрации веб-ресурсов, я переключился на использование System.Web.UI. ScriptManager . Теперь файлы выходят из ScriptManager.axd (вместо WebResource.axd ). Казалось, это решило проблему.

Старый код до исправления:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

Приведенный выше фрагмент кода использует System.Web.UI.ClientScriptManager

Новый код после исправления:

public class ScriptManagerExtension : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js");
    }
}

Приведенный выше фрагмент кода использует System.Web.UI.ScriptManager

Насколько я понимаю, ClientScriptManager был представлен в 2.0. Я полагаю, что ScriptManager - это новый улучшенный 3.5 способ управления сценариями, который обладает гораздо большей функциональностью.

/ пожав плечами

2 голосов
/ 08 апреля 2009

Ресурсы установлены как часть DLL?

Откройте решение Mri.Controls и просмотрите свойства ваших файлов ресурсов javascript.
Я думаю, что здесь может быть проблема.

...