Ад WebResource - ресурс не может быть найден

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

14
задан Naeem Sarfraz 20 February 2010 в 08:08
поделиться

7 ответов

Вместо this.GetType(), получите тип от блока, который содержит ресурс.. т.е.:

typeof(Company.Product.Web.Library.Class1)

, который работает?

14
ответ дан 1 December 2019 в 10:19
поделиться

Я думаю, что Вы хотите, чтобы полные пути были основаны на пространстве имен, не блоке; Так где угодно у Вас есть "CompanyProduct. Library.navigation.js", заменяют он "Компанией. Продукт. Сеть. Library.navigation.js". Кроме того, существует метод Page. ClientScript. RegisterClientScriptResource (), который делает то, в чем Вы нуждаетесь в одном методе (в противоположность использованию RegisterClientScriptInclude (GetWebResourceUrl ()).

3
ответ дан 1 December 2019 в 10:19
поделиться

Это хватается за соломинку немного, но могло случиться так, что Ваш asp.net не настраивается для обработки webresource.axd правильно? Если что-то пошло не так, как надо, возможно, тег обработчика отсутствует в web.config машины?

http тег обработчиков C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config должен иметь webresource.axd запись как это:

<httpHandlers>
    <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True"/>
</httpHandlers>

Также двойная проверка там не является никакой записью обработчика в web.config проекта, который мог переопределять сходить с web.config машины.

1
ответ дан 1 December 2019 в 10:19
поделиться

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

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

0
ответ дан 1 December 2019 в 10:19
поделиться

Поверните этого;

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

в это;

Page.ClientScript.RegisterClientScriptInclude("CompanyProduct.Library.navigation.js"...
0
ответ дан 1 December 2019 в 10:19
поделиться

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

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

0
ответ дан 1 December 2019 в 10:19
поделиться

Сегодня возникла та же проблема. Проблема заключается в том, что AssemblyResourceLoader использует сборку, содержащую тип, предоставленный методу GetWebResourceUrl (первый параметр), который в вашем случае является динамически созданной сборкой для главной страницы (.master) и не содержит ресурс ты ищешь. Я предполагаю, что ваш файл ресурсов включен в ту же сборку, что и ваша базовая главная страница (файл .master.cs), тогда вы можете использовать typeof , чтобы получить экземпляр Type

Page.ClientScript.RegisterClientScriptInclude(
   "NavigationScript",
   Page.ClientScript.GetWebResourceUrl(
      typeof(MyMasterPage),
      "CompanyProduct.Library.navigation.js"));

, где MyMasterPage - это имя вашего главная страница

Похоже, также можно использовать любой другой тип, объявленный в той же сборке, в которую внедрен ресурс.

4
ответ дан 1 December 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: