Razões pelas quais WebResources não podem ser encontrados
-
06-07-2019 - |
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.*"
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!