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, pretendemos convidá-lo para submeter as suas ideias sobre tópicos que lhe interessam e problemas que pretende ver endereçados artigos de base de dados de conhecimento no futuro e colunas de voz de suporte. Pode submeter as ideias e comentários utilizando o formulário Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) . Também há uma hiperligação para o formulário na parte inferior desta coluna.

Nesta página

Expandir tudo | Reduzir tudo

Introdução

Alta! Meu nome estiver Praveen Yerneni e sou um responsável técnico trabalhar com o grupo de suporte do ASP.NET no Microsoft. Na coluna deste mês, a vai descrevem recursos da Web e como implementá-los na sua aplicação.

Se for um programador que trabalha extensivamente COM controlos, poderá considerar este artigo útil no endereçamento algumas das questões chaves que poderá enfrentar durante o desenvolvimento de controlos. Anteriormente, no Microsoft ASP.NET 1.1, se pretender implementar ficheiros estáticos tais como ficheiros .HTML, ficheiros .css, ficheiros de imagem e ficheiros de script com um controlo COM, tinha de criar um programa de instalação e incluir estes ficheiros juntamente com o controlo COM. Apesar de este trabalho, apresentado muitos problemas ao implementar o controlo. Por exemplo, que tenha problemas com conflitos de versão, com certificando-se de que ficheiros como imagens foram implementados na mesma localização ou com danificados ou eliminados ficheiros estáticos que poderiam provocar o controlo falhe.

Web recursos no Microsoft ASP.NET 2.0 aborda estas questões, permitindo o programador incorporar estes recursos a assemblagem como Resources. Para aceder a estes recursos estáticos, apenas pode chamar um método no código do controlo.

Pode transferir o código de exemplo deste artigo a partir do Centro de transferências da Microsoft.

Os ficheiros seguintes estão disponíveis para transferência a partir do Centro de transferências da Microsoft:
Reduzir 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)
Reduzir 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 transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591  (http://support.microsoft.com/kb/119591/ ) Como obter ficheiros de suporte da Microsoft a partir de serviços online
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada o que ajuda a impedir alterações não autorizadas ao ficheiro.

Como funcionam os recursos da Web

Recursos da Web dependem de um processador especial denominado WebResource.axd foi concebido para obter recursos de assemblagem e sirva-los para o Web browser. O tipo de processador para WebResource.axd é AssemblyResourceLoader .

Quando chega um pedido do cliente para WebResource.axd in, a rotina de tratamento de procura o identificador de recursos da Web no método QueryString do objecto pedido . Baseado no valor do identificador de recursos da Web, o processador tenta carregar a assemblagem que contém este recurso. Se esta operação tiver êxito, a rotina de tratamento será, em seguida, procure o atributo de assemblagem e carregue a sequência de recurso da assemblagem. Finalmente, a rotina de tratamento de obter os dados da sequência de recursos e enviá-lo para o cliente juntamente com o tipo de conteúdo que especificar o atributo de assemblagem.

O URL para WebResource.axd aspecto semelhante ao seguinte:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
o formato deste URL é WebResource.axd?d= encrypted identifier & t =time stamp value. "d" significa para o recurso Web pedida. O "t" é a hora para a montagem pedida, que pode ajudar a determinar se ocorreram alterações ao recurso.

Mergulhando no código de

No exemplo, tenha desenvolvido um controlo COM consumida por uma aplicação Web do ASP.NET para demonstrar esta nova funcionalidade.

COM o controlo para o recurso de Web

Para criar e incorporar um recurso Web, desenvolveu COM um controlo ( SimpleControl ). Tem os seguintes recursos incorporados:
  • Dois ficheiros são denominados smallFail.gif e smallSuccess.gif de imagem. Estes ficheiros de imagem são utilizados para efeitos de rollover no controlo e são consumidos no código de controlo.
  • Um ficheiro HTML que chama Help.htm. Este ficheiro não contém mais texto e é apenas para demonstração.
  • Um ficheiro de JavaScript que chama MyScript.js. Este ficheiro contém algum código JavaScript que também demonstra a funcionalidade de substituição para obter uma referência a outro recurso incorporado na mesma assemblagem.
  • Um ficheiro de CSS que chama MyStyleSheet.css. Esta folha de estilos, em seguida, é consumida directamente da aplicação Web do ASP.NET.
Neste artigo, vai abordar as partes que são necessárias para recursos da Web.
Incorporar os recursos da Web
Em primeiro lugar, tem de efectuar-se de que todos os ficheiros estáticos são adicionados ao projecto Web biblioteca de controlos no Microsoft Visual Studio 2005 são recursos incorporados. Para incorporar estes recursos, tudo o que tem de fazer é adicionar estes ficheiros para o Visual Studio e, em seguida, modificar as propriedades destes ficheiros, de modo a que a acção de compilação seja definida como Recursos incorporados .

Depois de efectuar este procedimento, terá também de Certifique-se de que estes recursos tem sido referenciados pelo atributo de assemblagem WebResource no ficheiro AssemblyInfo.cs tal como abaixo indicado.
[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 assemblagem WebResource tem três parâmetros da seguinte forma:
  • Recursos Web : O nome do recurso que é incorporado na assemblagem
  • ContentType : MIME O tipo de ficheiro para o recurso
  • PerformSubstitution : um valor booleano que determina se outros URLs de recursos Web referenciados este recurso são analisados e substituídos com o caminho completo do recurso
A obter os recursos da Web
Para obter recursos Web, utilizaram o método GetWebResourceUrl , que é um método de classe ClientScriptManager que é normalmente utilizado para gerir scripts do lado do cliente. Este método devolve uma referência de URL para o recurso de lado do servidor que está incorporado numa assemblagem. O método GetWebResourceUrl aceita os seguintes dois parâmetros:
  • tipo : O tipo de recurso do lado do servidor
  • Nome do recurso : O nome do recurso lado do 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.
Utilizar a funcionalidade de substituição
Outra funcionalidade útil da utilização de recursos da Web é a propriedade PerformSubstitution do atributo WebResource como é mostrado na secção "Incorporar a recursos Web" acima. Esta funcionalidade permite-lhe realmente obter recursos da Web dentro de outro recurso incorporado. Se esta propriedade estiver activada, a rotina de tratamento de WebResource irá analisar o recurso incorporado e substitua a sintaxe para o atributo de assemblagem WebResource por recursos reais antes de servir a página.

No código, irá reparar que o controlo de hiperligação tem um evento do lado do cliente é denominado ChangeImage . Esta função ChangeImage está localizada num ficheiro de script. Segue-se o código para este 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 ficheiro de script chama MyScript.js também é um recurso incorporado no mesmo COM controlo. E repare que Estou a utilizar o método WebResource para fazer referência a outro recurso incorporado no ficheiro de script.

Além disso, para se certificar de que este ficheiro de JavaScript é registado na página, utilize o RegisterClientScriptInclude método da classe ClientScriptManager conforme é ilustrado abaixo.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Consumir o controlo no ASP.NET

Depois de ter criado o controlo COM êxito, necessita de consumir este controlo num projecto ASP.NET cliente. Para efectuar este procedimento, apenas tem de adicionar o controlo à caixa de ferramentas no ASP.NET. Em seguida, pode adicionar o controlo a qualquer formulário da Web no estruturador de.

Quando adiciona o controlo à caixa de ferramentas, o controlo é registado por si e o seguinte código é adicionado quando olha para a sintaxe HTML.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
no meu controlo COM, tem incorporado também um ficheiro de folha de estilo, será utilizado nas minhas aplicações ASP.NET. Para aceder a esta folha de estilos, terá de adicionar uma hiperligação HtmlControl na página HTML e defina a propriedade runat servidor tal como abaixo indicado.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
depois disto, pode definir programaticamente o atributo href deste controlo para apontar para o atributo de assemblagem WebResource no evento Page_Load tal como abaixo indicado.
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);
     }

quando executar o código, verá um controlo que aspecto o seguinte:
Reduzir esta imagemExpandir esta imagem
 small fail
E no rato sobre o controlo será o seguinte aspecto:
Reduzir esta imagemExpandir esta imagem
 small success
Quando clica nesta hiperligação,-leva-o para a página de ajuda que está incorporada no ficheiro COM controlo de assemblagem.

Conclusão

Recursos da Web é uma nova funcionalidade útil no ASP.NET 2.0. Pode utilizar esta funcionalidade para o partido se utilizar wisely. Várias técnicas de colocação em cache tem sido utilizadas para garantir que os recursos da Web não afectam o desempenho da aplicação.

No ASP.NET 2.0, WebResource.axd é utilizado internamente pelo Microsoft .NET Framework para obter recursos incorporados. Por exemplo, o .NET Framework utiliza WebResource.axd para obter o ficheiro de script WebUIValidation.js que é utilizado para controlos de validação e para obter o ficheiro de script Menu.js para controlos de menu .

Referências

Para obter mais informações, visite os seguintes Web sites da Microsoft:
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)

Ligado vs. incorporados recursos
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 blogues seguintes por Nikhil Kothari:
E com System.Web.UI.WebResourceAttribute?
http://www.nikhilk.net/WebResourceAttribute.aspx (http://www.nikhilk.net/WebResourceAttribute.aspx)

Ataques denial-of-Service atenuantes com recursos da Web
http://www.nikhilk.net/WebResourcesDenialOfServiceAttack.aspx (http://www.nikhilk.net/WebResourcesDenialOfServiceAttack.aspx)
Como sempre, vontade submeter ideias tópicos que pretende no futuro corrigida colunas ou na base de dados de conhecimento utilizando 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.