Pergunta

Oi eu estou tendo problemas para obter um arquivo js incorporado ao trabalho.

Eu tentei todos os seguintes:

  • Running servidor de desenvolvimento Cassini (VS2008, .NET 3.5)
  • Adicionado [assembly: WebResource ( "MyNamespace.MyScriptFile.js", "text / javascript")]. acima declaração de namespace da classe
  • arquivo Script tem ação de compilação "Recursos incorporados".
  • registrar Tentei durante OnInit, OnLoad e OnPreRender
  • arquivo Script é no mesmo assembly e namespace como o controle de registrá-lo.
  • Inaugurado montagem com refletor e verificado o nome do recurso está correto.
  • não funciona usando qualquer um dos seguintes métodos:

    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"));
    
    • Outros arquivos WebResource.axd estão sendo encontrados -. Só que este não está sendo encontrado

O pedido para o recurso retorna uma página 404 com uma exceção listados: "*[HttpException]: This is an invalid webresource request.*"

Usando o ScriptManager.RegisterClientScriptResource produz a exceção:

"*Web resource 'MyNamespace.MyScriptFile.js' was not found.*"
Foi útil?

Solução

Tente implementar seu próprio ScriptManger e, em seguida, adicionar o arquivo incorporado de lá. Aqui está um exemplo

public class MyScriptManager : System.Web.UI.ScriptManager
{
    protected override void OnInit(EventArgs e)
    {
            base.OnInit(e);
            RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "MyNamespace.MyScriptFile.js");
    }
}

Outras dicas

Em seu código exemplo, você está fazendo uma chamada para GetType () ... o tipo é utilizado como ponto de partida para a pesquisa. Dependendo de onde você está fazendo a sua chamada para GetType (), você pode não estar recebendo de volta o que você espera. Desde ASP.NET compila dinamicamente tipos para suas páginas e controles personalizados, GetType () pode ser retornando um tipo definido em um novo conjunto construído pelo ASP.NET.

Você poderia tentar fazer typeof (SomeType) em vez, onde SomeType é apropriado com base na localização do seu recurso (ex. O tipo de controle que você está trabalhando).

Talvez o seu arquivo de recurso está localizado dentro da pasta (s) no projeto? Se assim for, você deve especificar outra cadeia de nome / localização na montagem e quando você se registra o script

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

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

normalmente isso é um problema comum

Uma causa alternativa deste problema - você foi demasiado pesado entregue com o seu Global.asax, e você disse que tudo o resto depois de suas regras lhe dá a homepage. Não tão inteligente de mim, uma ou duas horas desperdiçadas em que!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top