Ад WebResource - ресурс не может быть найден - PullRequest
14 голосов
/ 26 ноября 2008

Помечен файл javascript как "Встроенный ресурс"
Добавлен атрибут WebResource в мой класс AssemblyInfo

Теперь я пытаюсь вывести встроенный JavaScript на мою главную страницу. Все, что я получаю, это «веб-ресурс не найден» с URL-адреса веб-ресурса.


Название сборки проекта:

CompanyProduct


Пространство имен проекта по умолчанию:

Company.Product.Web


Файл Javascript расположен:
Библиотека / navigation.js


AssemblyInfo:

[assembly: WebResource("CompanyProduct.Library.navigation.js", "text/javascript")]


Код на главной странице:

Page.ClientScript.RegisterClientScriptInclude("NavigationScript", Page.ClientScript.GetWebResourceUrl(this.GetType(), "CompanyProduct.Library.navigation.js"));

Ошибка сервера в приложении '/'.

Ресурс не найден.

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, изменилось его имя или временно недоступен. Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: / WebResource.axd
Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.1433; ASP.NET версия: 2.0.50727.1433

Ответы [ 14 ]

0 голосов
/ 21 апреля 2011

У меня была похожая ситуация, и примерно через 4 часа исследований и тестирования я получил окончательное решение: Пространство имен по умолчанию должно совпадать с именем сборки .
(Можно использовать Reflector или использовать приведенный ниже фрагмент кода, чтобы получить имена встроенных ресурсов.

string[] embeddedResNames = Assembly.LoadFile("YourDll.dll").GetManifestResourceNames()
0 голосов
/ 27 февраля 2009

Является ли ресурс, который вы добавляете в другой сборке, кодом, который вы используете для создания тега сценария? В этом случае я думаю, что this.GetType () вернет ссылку на тип в неправильной сборке, поэтому у кода веб-ресурса не будет правильной сборки для загрузки ресурса.

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

0 голосов
/ 27 ноября 2008

Включите это;

Page.ClientScript.RegisterClientScriptInclude("NavigationScript"...

в это;

Page.ClientScript.RegisterClientScriptInclude("CompanyProduct.Library.navigation.js"...
0 голосов
/ 27 ноября 2008

Ответ на ваш вопрос полностью зависит от того, где у вас есть этот файл в вашем реальном проекте, и каково пространство имен по умолчанию. Как упоминал Крис, путь, который вы указываете методам, регистрирующим скрипт, требует правильного пути для поиска встроенного ресурса. Вы не просто совпадаете со строкой, указанной в вашем AssemblyInfo. Строка должна быть правильным путем к ресурсу.

<пространство имен проекта по умолчанию> / <любые подпапки, в которых у вас есть файл> / <имя файла>

...