WebResource.axd пусто или не найдено

Я пытаюсь экспортировать библиотеку управления в .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 внутри окна "Свойства":
Действие сборки: "Встроенный ресурс"
Копировать в выходной каталог: "Копировать всегда"

Какой шаг мне не хватает?

Ответ 1

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

Итак, вместо использования System.Web.UI. ClientScriptManager, используемого для регистрации WebResources, я перешел на использование 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 - это новый улучшенный способ управления сценариями, который имеет гораздо больше функциональности.

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

Ответ 2

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

Ответ 3

Являются ли ресурсы определенными частью DLL?

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