Причины, по которым нельзя найти веб-ресурсы - PullRequest
3 голосов
/ 27 октября 2009

Привет, у меня проблемы с получением встроенного файла js для работы.

Я пробовал все следующее:

  • Запуск сервера разработки Cassini (VS2008, .NET 3.5)
  • Добавлено [сборка: WebResource («MyNamespace.MyScriptFile.js», «text / javascript»)] над объявлением пространства имен класса.
  • Файл сценария имеет действие сборки "Embedded Resource".
  • Попытка регистрации во время OnInit, OnLoad и OnPreRender
  • Файл сценария находится в той же сборке и пространстве имен, что и регистрирующий его элемент управления.
  • Открыл сборку с помощью Reflector и проверил правильность имени ресурса.
  • Не работает ни один из следующих методов:

    ScriptManager.RegisterClientScriptResource(Page, GetType(), "MyNamespace.MyScriptFile.js");
    
    Page.ClientScript.RegisterClientScriptResource(GetType(), "MyNamespace.MyScriptFile.js");
    
    Page.ClientScript.RegisterClientScriptInclude(GetType(), "key",
        Page.ClientScript.GetWebResourceUrl(GetType(), "MyNamespace.MyScriptFile.js"));
    
    • Найдены другие файлы WebResource.axd - только этот не найден.

Запрос на ресурс возвращает страницу 404 с перечисленным исключением: "*[HttpException]: This is an invalid webresource request.*"

Использование ScriptManager.RegisterClientScriptResource создает исключение:

"*Web resource 'MyNamespace.MyScriptFile.js' was not found.*"

Ответы [ 4 ]

3 голосов
/ 04 ноября 2009

В вашем примере кода вы делаете вызов GetType () ... тип используется в качестве отправной точки для поиска. В зависимости от того, где вы звоните в GetType (), вы можете не получить то, что ожидаете. Поскольку ASP.NET динамически компилирует типы для ваших страниц и пользовательских элементов управления, GetType () может возвращать тип, определенный в новой сборке, созданной ASP.NET.

Вместо этого вы можете попробовать использовать typeof (SomeType), где SomeType подходит в зависимости от местоположения вашего ресурса (например, типа элемента управления, с которым вы работаете).

2 голосов
/ 03 ноября 2009

Может быть, ваш файл ресурсов находится в папке (ях) в проекте? если это так, вы должны указать другую строку имени / местоположения в сборке и при регистрации сценария

Page.ClientScript.RegisterClientScriptResource(GetType(), "MyNamespace.Folder1.Folder2.MyScriptFile.js");

[assembly: WebResource("MyNamespace.Folder1.Folder2.MyScriptFile.js", "text/javascript")]

обычно это обычная проблема

1 голос
/ 02 ноября 2009

Попробуйте реализовать собственный ScriptManger, а затем добавить оттуда встроенный файл. Вот пример

public class MyScriptManager : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
            base.OnInit(e);
            RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "MyNamespace.MyScriptFile.js");
    }
}
0 голосов
/ 17 декабря 2013

Альтернативная причина этой проблемы - вы слишком тяжело справились со своим Global.asax и сказали, что все остальное после ваших правил дает вам домашнюю страницу. Не такой умный с моей стороны, час или два на это потрачены впустую!

...