ID do artigo: 910442 - Última revisão: segunda-feira, 15 de janeiro de 2007 - Revisão: 1.3

Trabalhar com recursos da Web no ASP.NET 2.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Coluna de voz de suporte do ASP.NET

Trabalhar com recursos da Web no ASP.NET 2.0

para personalizar esta coluna às suas necessidades, queremos convidá-lo para enviar suas idéias sobre tópicos que interessam a você e problemas que você deseja ver abordados artigos do Knowledge Base no futuro e colunas de voz de suporte. Você pode enviar suas idéias e comentários usando o formulário Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) . Há também um link para o formulário na parte inferior desta coluna.

Nesta página

Expandir tudo | Recolher tudo

Introdução

Olá! Meu nome é Praveen Yerneni e sou líder técnico trabalhando com o grupo de suporte do ASP.NET da Microsoft. Na coluna deste mês, vou discutir recursos da Web e como implementá-los em seu aplicativo.

Se você for um desenvolvedor que trabalha amplamente COM controles, talvez este artigo útil no endereçamento alguns dos principais problemas que você pode enfrentar ao desenvolvimento de controles. Anteriormente, no Microsoft ASP.NET 1.1, se você quiser implantar arquivos estáticos como arquivos .HTML, arquivos .css, arquivos de imagem e arquivos de script usando um controle COM, você precisava criar um instalador e reunir esses arquivos junto com o controle COM. Embora isso funcionou, ela apresentada muitos problemas ao implantar o controle. Por exemplo, você pode estar com problemas com conflitos de versão, com certificando-se de que os arquivos como imagens foram implantados no mesmo local ou com arquivos de estáticos corrompidos ou excluídos que poderiam causar o falha do controle.

Web recursos no Microsoft ASP.NET 2.0 soluciona esses problemas, permitindo que o desenvolvedor incorporar esses recursos no assembly como Resources. Para acessar esses recursos estáticos, você apenas pode chamar um método no código do controle.

Você pode baixar o código de exemplo deste artigo a partir do Centro de download da Microsoft.

Os seguintes arquivos estão disponíveis para download no Centro de download da Microsoft:
Recolher esta imagemExpandir esta imagem
Download
Download the ConsumeControl.exe package now. (http://download.microsoft.com/download/a/6/c/a6cb843e-7eda-42fb-ade5-1f77d893c1e3/consumecontrol.exe)
Recolher esta imagemExpandir esta imagem
Download
Download the SimpleControl.exe package now. (http://download.microsoft.com/download/a/6/c/a6cb843e-7eda-42fb-ade5-1f77d893c1e3/simplecontrol.exe)
Para obter mais informações sobre como baixar os arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
119591  (http://support.microsoft.com/kb/119591/ ) Como obter arquivos de suporte da Microsoft de serviços on-line
Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.

Como funcionam os recursos da Web

Recursos da Web dependem de um manipulador especial que é denominado WebResource.axd, que é projetado para recuperar recursos de assembly e servem-los para o navegador da Web. O tipo de manipulador de WebResource.axd é AssemblyResourceLoader .

Quando chegar uma solicitação do cliente para WebResource.axd, o manipulador de procura o identificador de recurso da Web no método QueryString do objeto Request . Com base no valor do identificador do recurso da Web, o manipulador, em seguida, tenta carregar o assembly que contém esse recurso. Se esta operação for bem-sucedida, o manipulador será, em seguida, procure o atributo de assembly e carregar o fluxo de recurso do assembly. Finalmente, o manipulador irá capturar os dados do fluxo de recursos e enviá-lo para o cliente juntamente com o tipo de conteúdo que você especifique no atributo assembly.

A URL para WebResource.axd é semelhante ao seguinte:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
o formato dessa URL é WebResource.axd?d= encrypted identifier & t =time stamp value. "d" significa para o recurso da Web solicitado. O "t" é o carimbo de hora para o assembly solicitado, que pode ajudar a determinar se houve alterações para o recurso.

Mergulhando no código

No meu exemplo, desenvolvi um controle COM que é consumido por um aplicativo ASP.NET para demonstrar esse novo recurso.

Controle de COM para o recurso da Web

Para criar e incorporar um recurso da Web, tenha desenvolvido um COM controle ( SimpleControl ). Ele tem os seguintes recursos incorporados:
  • Dois arquivos são nomeados smallFail.gif e smallSuccess.gif de imagem. Esses arquivos de imagem são usados para efeitos de sobreposição no controle e são consumidos dentro do código de controle.
  • Um arquivo HTML que é chamado Help.htm. Este arquivo não contém a quantidade de texto e é apenas para demonstração.
  • Um arquivo JavaScript que é chamado MyScript.js. Este arquivo contém um código JavaScript que demonstra também o recurso de substituição para obter uma referência a outro recurso incorporado dentro do mesmo assembly.
  • Um arquivo .CSS que é chamado MyStyleSheet.css. Esta folha de estilos, em seguida, é consumida diretamente do aplicativo ASP.NET.
Neste artigo, discutirei as partes que são necessárias para recursos da Web.
Incorporar os recursos da Web
Primeiro, é necessário verificar se todos os arquivos estáticos que são adicionados para o projeto Web Control Library em Microsoft Visual Studio 2005 são recursos incorporados. Para incorporar esses recursos, tudo o que você precisa fazer é adicionar esses arquivos para o Visual Studio e, em seguida, modificar as propriedades desses arquivos para que a ação de compilação é definida como Embedded Resource .

Após você ter feito isso, você também precisará Certifique-se que esses recursos tenham sido referenciados pelo atributo WebResource assembly no arquivo AssemblyInfo.cs como mostrado abaixo.
[assembly: WebResource("SimpleControl.Help.htm", "text/html")]
[assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]

o atributo de assembly WebResource tem três parâmetros da seguinte maneira:
  • Recursos da Web : O nome do recurso que está incorporado no assembly
  • ContentType : tipo de arquivo MIME O para o recurso
  • PerformSubstitution : um valor Boolean que determina se outras URLs de recursos da Web que são referenciadas nesse recurso são analisados e substituídos com o caminho completo do recurso
Buscando os recursos da Web
Para obter o recurso da Web, usei o método GetWebResourceUrl , que é um método da classe ClientScriptManager que é normalmente usado para gerenciar scripts de cliente. Esse método retorna uma referência URL para o recurso de servidor que está incorporado em um assembly. O método GetWebResourceUrl aceita dois parâmetros a seguir:
  • tipo : O tipo de recurso de servidor
  • Nome do recurso : O nome do recurso de servidor
To use this method, first you have to create an instance of the ClientScriptManager class and get the type of the class as shown below.
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

When you have an instance of this class, you then have to call this method and pass the appropriate parameters as shown below, where I create a HyperLink button, and set the NavigateURL method to point to an embedded HTML resource.
HyperLink hlHelpFile = new HyperLink();
            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
            hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
            hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");
            
            this.Controls.Add(hlHelpFile);

            Image imgTest = new Image();
            imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
            imgTest.ID = "image1";
            hlHelpFile.Controls.Add(imgTest);

Also in the same code listing above, I have created an Image button and the ImageUrl attribute is getting its value from another embedded .gif image resource.
Usando o recurso de substituição
Outro recurso útil do uso de recursos da Web é propriedade de atributo WebResource PerformSubstitution como mostrado na seção "Incorporar a Web Resources" acima. Esse recurso permite que você realmente Obtenha recursos da Web dentro de outro recurso incorporado. Se essa propriedade estiver habilitada, o manipulador WebResource irá analisar recurso incorporado e substitua a sintaxe para o atributo de assembly WebResource por recursos reais antes que atende a página.

No código acima, você irá notar que o controle HyperLink tem um evento de cliente que é chamado ChangeImage . Esta função ChangeImage está localizada em um arquivo de script. A seguir está o código para esse script.
function ChangeImage(imgControl,varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
    document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
   document.getElementById('Label1').style.color = varcolor;
}
este arquivo de script chamado MyScript.js também é um recurso incorporado no mesmo controle COM. E observe que Estou usando o método WebResource para se referir a outro recurso incorporado no arquivo de script.

Além disso, para certificar-se que esse arquivo JavaScript é registrado na página, uso o RegisterClientScriptInclude método da classe ClientScriptManager como mostrado abaixo.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Consumindo o controle no ASP.NET

Depois de você ter criado o controle COM êxito, você precisa consumir esse controle em um projeto do ASP.NET de cliente. Para fazer isso, basta adicionar o controle à caixa de ferramentas no ASP.NET. Em seguida, você pode adicionar o controle a qualquer formulário da Web no designer.

Quando você adiciona o controle à caixa de ferramentas, o controle está registrado para você e o código a seguir é adicionado quando você examinar a sintaxe HTML.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
no meu controle COM, também tenha incorporado um arquivo de folha de estilo, que eu estará usando em meu aplicativo ASP.NET. Para acessar esta folha de estilos, você precisará adicionar um link HtmlControl na página HTML e defina a propriedade runat como servidor conforme mostrado abaixo.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
depois disso, você pode definir programaticamente o atributo Href desse controle para apontar para o atributo de assembly WebResource no evento Page_Load , como mostrado abaixo.
protected void Page_Load(object sender, EventArgs e)
    {
        //Get the name of the Web Resource.
        String rsname = "SimpleControl.MyStyleSheet.css";
        
        //Get the type of the class.
        Type rstype = typeof(SimpleControl.MSButton);

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;
        lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
     }

ao executar o código, você verá um controle que aparência o seguinte:
Recolher esta imagemExpandir esta imagem
 small fail
E no mouse-over, o controle será a seguinte aparência:
Recolher esta imagemExpandir esta imagem
 small success
Quando você clica nesse link, levará você para a página de Ajuda, que incorporados no arquivo de assembly do controle COM.

Conclusão

Recursos da Web é um novo recurso útil no ASP.NET 2.0. Você pode usar esse recurso para sua vantagem se você usar com sabedoria. Várias técnicas de armazenamento em cache foram usadas para se certificar de que recursos da Web não afetam o desempenho do aplicativo.

No ASP.NET 2.0, WebResource.axd é usado internamente pelo Microsoft .NET Framework para recuperar recursos incorporados. Por exemplo, o .NET Framework usa WebResource.axd para recuperar o arquivo de script WebUIValidation.js que é usado para controles de validação e para recuperar o arquivo de script Menu.js para controles de menu .

Referências

Para obter mais informações, visite os seguintes sites:
Método ClientScriptManager.GetWebResourceUrl
http://msdn2.microsoft.com/en-us/library(d=robot)/system.web.ui.clientscriptmanager.getwebresourceurl.aspx (http://msdn2.microsoft.com/en-us/library(d=robot)/system.web.ui.clientscriptmanager.getwebresourceurl.aspx)

Classe WebResourceAttribute
http://msdn2.microsoft.com/en-us/library(d=robot)/system.web.ui.webresourceattribute.aspx (http://msdn2.microsoft.com/en-us/library(d=robot)/system.web.ui.webresourceattribute.aspx)

Vinculados vs. recursos incorporados
http://msdn2.microsoft.com/en-us/library/ht9h2dk8.aspx (http://msdn2.microsoft.com/en-us/library/ht9h2dk8.aspx)
Para mais informações sobre recursos da Web, consulte os seguintes blogs por Nikhil Kothari:
Que há System.Web.UI.WebResourceAttribute?
http://www.nikhilk.net/WebResourceAttribute.aspx (http://www.nikhilk.net/WebResourceAttribute.aspx)

Ataques de negação de serviço atenuantes com recursos da Web
http://www.nikhilk.net/WebResourcesDenialOfServiceAttack.aspx (http://www.nikhilk.net/WebResourcesDenialOfServiceAttack.aspx)
Como sempre, vontade enviar idéias sobre tópicos desejado no futuro abordada colunas ou na Base de dados de Conhecimento usando o formulário Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) .

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 2.0
Palavras-chave: 
kbmt kbhowto kbasp KB910442 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 910442  (http://support.microsoft.com/kb/910442/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.