Você está na página 1de 46

2

Fundamentos do ASP.NET
ASP.NET a nova verso da tecnologia Active Server Pages utilizada para desenvolver pginas Web com contedo dinmico. Ao mesmo tempo em que ASP.NET possui sintaxe compatvel com o ASP 3.0, tambm possui um novo modelo de programao orientado a objeto. As pginas ASP.NET so compiladas, e no interpretadas como nas verses anteriores, e podem ser implementadas utilizando-se Visual Basic.NET, C# (l-se C Sharp) e JScript.NET. Os exemplos deste livro esto em Visual Basic.NET. Por meio do ASP.NET pode-se utilizar todos os recursos disponveis no Framework .NET, como o ambiente de runtime CLR, o tipo comum de dados e a biblioteca de classes .NET. Em vez de se limitar aos seis objetos ASP clssicos, o ASP.NET dispe de uma ampla variedade de componentes teis que podem ser utilizados ou estendidos. Alm disso, possvel utilizar componentes desenvolvidos utilizando a tecnologia COM/COM+, embora aspectos de desempenho devam ser considerados. O ASP.NET possui dois modelos de programao: Web Forms: utilizado para construir pginas Web baseadas em formulrios. Pode-se utilizar controles de Servidor para a criao de elementos de interface, program-los e reutiliz-los dentro da aplicao. Web Services: utilizado para acessar componentes remotamente. Ao usar Web Services, pode-se expor interfaces para acessar dados ou regras de negcio, que podem ser manipulados por clientes ou outras aplicaes. Web Services permite a troca de dados em um cenrio cliente-cliente ou servidor-servidor, usando protocolos-padro como HTTP e XML para transportar dados.

17

ASP .NET Guia do Desenvolvedor

Por que uma nova verso ASP?


Cdigo com estruturao confusa

A seguir, algumas razes que motivaram a implementao de uma nova verso ASP.

No ASP possvel a utilizao de cdigos HTML, Script, componentes e outros elementos misturados na pgina, dicultando o desenvolvimento, a manuteno e a reutilizao de cdigo. O ASP.NET oferece o recurso chamado de Code Behind, que possibilita colocar a parte de design da pgina e a parte de cdigo em dois arquivos distintos. O design pode ser feito em paralelo com a programao. Por outro lado, tambm possvel colocar o cdigo dentro da prpria pgina de design, se o desenvolvedor assim desejar. Baixa produtividade No ASP necessrio escrever cdigo para praticamente tudo, como, por exemplo, para manter o estado dos campos de um formulrio ou validar a entrada de dados do usurio. O ASP.NET introduz um modelo de componente, com controles baseados no servidor e orientados a eventos, o que torna a programao similar maneira como feita no Visual Basic. Pginas interpretadas No ASP as pginas so interpretadas, ou seja, cada linha do arquivo lida, interpretada e transformada em HTML, o qual enviado para o browser que solicitou a pgina. No ASP.NET as pginas so compiladas em um executvel (DLL), o que pode acarretar um ganho signicativo de performance. Alm disso, pode-se utilizar qualquer linguagem que suporte o Framework .NET. O Visual Studio.NET oferece o VB.NET, C# e o C++ como opes de instalao. No ASP possvel utilizar somente linguagens de script, como o VbScript e o JScript. Diversidade de browsers Com a utilizao de dispositivos diferentes para acesso Internet, como PDAs, aparelhos de TV, console de jogos, celulares, entre outros, surge a necessidade de considerar diferentes sadas para uma mesma aplicao, como, por exemplo utilizando formato HTML, WML, XML e HDML. O ASP.NET oferece um modelo de programao unicado para o desenvolvimento de aplicaes para PCs e dispositivos mveis. Utilizando controles especiais e extenses do ASP. NET, pode-se desenvolver aplicaes que podero ser acessadas por meio de diferentes dispositivos. Para o desenvolvimento de aplicaes para dispositivos mveis, deve-se utilizar o Mobile Internet Toolkit, que pode ser baixado em http://www.msdn.microsoft.com/vstudio/device/mitdefault.asp. Alm desses pontos, pode-se destacar a necessidade de ferramentas melhores para depurao de cdigo e layout das pginas, recursos limitados de segurana, diculdades na distribuio e congurao da aplicao, falta de suporte para Web Farm e cache do lado do servidor.

18

Captulo 2 Fundamentos do ASP .NET

Novos recursos do ASP.NET

O ASP.NET oferece alguns novos recursos como: Controles de Servidor que mantm o estado: pginas ASP.NET utilizam controles do lado do servidor para automatizar o gerenciamento do estado na pgina e reduzir o volume de cdigo. Controles HTML que so executados no servidor: novos controles HTML que so executados no servidor e produzem cdigo HTML. Pode-se acessar por meio de cdigo as propriedades e os mtodos dos controles durante a execuo. Os eventos dos controles podem ser detectados pelo browser e o respectivo cdigo pode ser executado no servidor em resposta a esses eventos. Controles de Interface: controles de interface mais sosticados executados no servidor, que podem ser utilizados para criar elementos de interface mais complexos na pgina, sem a necessidade de utilizao de controles ActiveX no cliente. O ASP.NET possui controles como Calendar, Grids, tabelas e listas, que podem ser vinculados diretamente a uma fonte de dados. Web Services (Servios Web): permitem que componentes sejam disponibilizados como servios utilizando protocolos-padro da Internet. Congurao e Distribuio da aplicao simplicados: a congurao da aplicao pode ser feita por meio de arquivos no formato XML. Os componentes no precisam mais ser registrados no servidor e as aplicaes podem, por exemplo, ser distribudas utilizando comandos de cpia de arquivo ou FTP. Sesses mais escalveis: recurso de compartilhamento de informaes via sesso (session) mais escalvel e com suporte de sesso para Web Farm. Debug e Trace melhorados: recursos de tratamento de erros, depurao e rastreamento melhorados. A depurao de cdigo no ASP.NET no se limita somente aos comandos Response.write e Response.End. Segurana: recursos mais exveis de segurana para autenticao e autorizao do usurio. Cache: cache do lado do servidor permite que sejam armazenados valores e objetos para utilizao nas pginas. ADO x ADO.NET: substituio do conceito de Recordset do ASP pelo DataSet. O ADO.NET possui uma arquitetura de dados desconectada e integrao nativa com XML. Fim do DLL Hell: os componentes desenvolvidos na plataforma .NET dispensam o registro no Windows. Uma simples cpia da DLL (assembly) para o local de destino j possibilita sua utilizao, at se esta estiver em uso. Alm disso, possvel utilizar componentes COM, ou seja, componentes criados pelo Visual Basic 6.0 ou qualquer outra ferramenta de gerao de componentes no padro ActiveX.

19

ASP .NET Guia do Desenvolvedor


Porm, esses componentes sero executados fora do ambiente gerenciado do Framework .NET, ou seja, qualquer erro que ocorrer no componente car sob a responsabilidade do prprio sistema operacional. Biblioteca de componentes: disponibilizao de componentes para o desenvolvimento de aplicaes Web por meio da Biblioteca de Classes do Framework .NET. Recursos para envio de e-mail, criptograa, contadores, calendrio, upload, acesso ao registro de eventos do servidor, MSMQ, acesso a recursos de rede e banco de dados, por exemplo.

Linguagens suportadas no ASP.NET

O ASP.NET pode utilizar qualquer linguagem compatvel com o Framework .NET. Inicialmente esto disponveis as linguagens VB.NET, C# e JScript. Para denir a linguagem a ser utilizada, devemos utilizar a seguinte sintaxe:
<script language=VB runat=server>

Ou em C#:
<script language=C# runat=server>

Ferramentas de desenvolvimento

O Framework .NET oferece compiladores de linha de comando, que podem ser utilizados a partir de uma janela DOS, especicando-se os parmetros corretos. Todo o cdigo pode ser desenvolvido no NotePad, ou em qualquer outro editor de texto. Porm, pode-se utilizar o Visual Studio.NET, que oferece um ambiente de desenvolvimento visual, reconhecimento da sintaxe ASP.NET, recursos como IntelliSense (que j existia no Visual Studio 6.0, que exibe todos os argumentos e seus tipos quando so digitados o nome de um mtodo e um parntese de abertura), Clipboard Ring (rea de transferncia especial), Outlining e Hiding (permite visualizar a estrutura resumida do cdigo), navegao pelo texto (por meio de botes de navegao pode-se navegar por locais j visitados do cdigo), Word wrap (quebra de linha automtica) e endentao inteligente. Outros editores que tambm podem ser utilizados:

WebMatrix (www.asp.net) uma ferramenta gratuita da Microsoft. O livro Desenvolvendo Aplicaes ASP.NET com Web Matrix, da Novatec Editora, uma boa opo para quem quiser aprender a utiliz-la. UltraEdit32 (www.ultraedit.com). EditPlus (www.editplus.com). HomeSite (www.macromedia.com). SharpDevelop (www.icsharpcode.net). Boxer Text Editor (www.boxersoftware.com). Frst Page 2000 (www.pvrsoft.com).

20

Captulo 2 Fundamentos do ASP .NET

Figura 2.1 Tela inicial do We Matrix.

Arquitetura do ASP.NET

Figura 2.2 Viso geral da arquitetura do ASP .NET.

21

ASP .NET Guia do Desenvolvedor


Nas verses anteriores do ASP, a pgina era interpretada sempre que requisitada (com exceo das pginas armazenadas no cache do servidor, que j foram interpretadas). No modelo ASP.NET, o cdigo compilado para MSIL, transformando a pgina em um objeto, armazenando-o no cache do servidor e tornando-o disponvel para ser executado. A pgina compilada quando criada ou alterada, porm a compilao s ocorre realmente quando a pgina solicitada. Mesmo que a pgina no possua nenhum recurso ASP.NET e tenha apenas HTML comum, ainda assim ela ser compilada dentro do modelo .NET. Quando uma pgina ASP.NET requisitada, o servidor Web direciona a requisio para o executvel aspnet_wp.exe, para que a requisio seja atendida. O resultado devolvido para o servidor Web, que, por sua vez, o envia para o browser que solicitou a pgina. A verso compilada em MSIL ca armazenada em uma DLL dentro de Drive:\ WINNT\Microsoft.Net\Framework\v.1.x\Temporary ASP.NET les\. Pode-se visualizar o contedo dessa DLL no MSIL Disassembler, digitando ILDASM na linha de comando, como mostrado na gura 2.3. O ASP.NET utiliza uma extenso de arquivo diferente de suas verses anteriores (.aspx em vez de .asp) e possui um ambiente de execuo totalmente separado (o Asp.dll no foi modicado). Isso signica que pginas .asp e .aspx podem coexistir em um mesmo ervidor e em uma mesma aplicao.

Figura 2.3 Visualizando informao do assembly com o ILDasm.

22

Captulo 2 Fundamentos do ASP .NET

Pginas ASP.NET

Uma pgina ASP.NET um arquivo texto com a extens .aspx, como no exemplo a seguir:

Figura 2.4 Estrutura de uma pgina ASP .NET. Essa pgina destaca os elementos mais comuns encontrados em uma pgina ASP.NET:
Linha 1 2-8 14 15 16 18-24 Descrio Diretiva <% @ Page %> que especica parmetros de compilao da pgina. Bloco de Declarao de Cdigo, onde podem ser colocadas a funcionalidade da pgina e rotinas de tratamento de eventos. Texto esttico. Declarao de um formulrio Web, utilizando o controle de servidor form. Bloco de Gerao de Cdigo, onde pode ser inserido cdigo ASP.NET no meio de cdigo HTML. Cdigo contendo os controles de servidor (HTML e Web).

Com a introduo de controles executados no servidor (Server Controls), as pginas ASP sofreram uma mudana na maneira de serem programadas. O novo modelo utiliza a programao orientada a eventos, dessa forma, os eventos que acontecem em um controle no cliente podem ser detectados pelo servidor e uma ao pode ser tomada em resposta ao evento. Alm disso, no ASP.NET uma pgina representada por uma instncia da classe Page, que automaticamente criada toda vez que feita a requisio da pgina.

23

ASP .NET Guia do Desenvolvedor

Classe Page
Toda pgina ASP.NET solicitada compilada como um objeto da classe Page, e a instncia dessa classe armazenada no cache do servidor, mesmo que a pgina contenha somente texto HTML. A classe Page funciona como um container para todos os controles que fazem parte da pgina solicitada, disponibilizando seus mtodos, propriedades e eventos, os quais podem ser acessados diretamente em uma pgina ASP.NET, como, por exemplo: Validate em vez de Page.Validate. Namespace: Assembly: Construtor
New Page ()

System.Web.UI System.Web (System.Web.dll)

Cria uma nova instncia da classe Page. Propriedades pblicas A classe Page possui as seguintes propriedades pblicas, alm das propriedades herdadas da classe Control. Application Retorna uma referncia a um objeto do tipo Application (HttpApplicationState).
Public ReadOnly Property Application As HttpApplicationState

Cache Retorna uma referncia a um objeto do tipo Cache. Uma instncia da classe Cache criada para cada aplicao, e ela permanece disponvel durante todo o ciclo de vida desta. O Cache pode ser utilizado para armazenar valores entre requisies de pginas, os quais sero visveis para todos os usurios. No ASP.NET, pode-se utilizar o cache do servidor tanto para armazenamento da sada de uma pgina dinmica, por meio da diretiva @OutPutCache, como para o armazenamento de valores especcos.
Public ReadOnly Property Cache As Cache

Exemplo:
Cache(txt1) = txtName.value

ClientTarget Dene ou retorna um valor que permite alterar a deteco automtica de browser. Pode ser utilizado para especicar os recursos suportados pelo browser, os quais devem ser considerados para gerar a sada da pgina (por exemplo, se o browser suporta DHTML). O valor denido nessa propriedade deve corresponder ao valor especicado na seo <clientTarget> do arquivo de congurao Web.Cong. Ao denir um valor para essa propriedade, a deteco automtica de browser desabilitada.
Public Property ClientTarget As String

24

Captulo 2 Fundamentos do ASP .NET


EnableViewState Dene ou retorna um valor indicando se a pgina (e todos os controles contidos nela) deve manter o seu estado (View State) entre requisies da pgina (True) ou no (False) (default = True).
Overrides Public Property EnableViewState As Boolean

ErrorPage Dene ou retorna a pgina que deve ser carregada, caso seja detectado um erro (Exception) no tratado.
Public Property ErrorPage As String

ID Dene ou retorna um identicador da instncia da classe Page da pgina em execuo.


Overrides Public Property ID As String

IsPostBack Indica se a pgina est sendo recarregada aps um round-trip (ida e volta ao servidor) ou se est sendo carregada pela primeira vez, permitindo o uso do evento Page_Load para denir valores iniciais para os controles.
Public ReadOnly Property IsPostBack As Boolean Valor True False Descrio Indica que a pgina foi carregada aps um round-trip. Indica que a pgina est sendo carregada pela primeira vez ou por meio do boto Refresh .

Exemplo:
<%@ Page Language=VB %> <html> <head> <title>IsPostBack</title> <script language=VB runat=server> Sub Page_Load(Src As Object, E As EventArgs) if not isPostBack then response.write (Primeira execuo da pgina) end if End Sub </script> </head> <body> </body> </html>

IsValid Indica se a validao efetuada pelos controles de validao ocorreu com sucesso (True). Caso a pgina no possua controles de validao, retornar True.
Public ReadOnly Property IsValid As Boolean

25

ASP .NET Guia do Desenvolvedor


Request Retorna uma referncia ao objeto Request (HttpRequest).
Public ReadOnly Property Request As HttpRequest

Response Retorna uma referncia ao objeto Response (HttpResponse).


Public ReadOnly Property Response As HttpResponse

Server Retorna uma referncia ao objeto Server (HttpServerUtility).


Public ReadOnly Property Server As HttpServerUtility

Session Retorna uma referncia ao objeto Session (HttpSessionState).


Overridable Public ReadOnly Property Session As HttpSessionState

SmartNavigation Dene ou retorna um valor indicando que o recurso Smart Navigation est habilitado (True) ou no (False). Smart Navigation um recurso suportado pelo browser Internet Explorer 5 (ou superior), que oferece funcionalidades de navegao, tais como: persistncia da posio da barra de rolagem entre pginas, persistncia do foco em elementos da pgina durante a navegao e armazenamento do ltimo estado da pgina no histrico do browser. O recurso Smart Navigation pode ser habilitado pelo atributo SmartNavigation da diretiva @Page.
Public Property SmartNavigation As Boolean

Trace Retorna uma referncia ao objeto TraceContext, que mostra detalhes de execuo da pgina, caso este tenha sido habilitado. A depurao (Tracing) pode ser habilitada por meio da diretiva @Page: <%@ Page trace=true %>.
Public ReadOnly Property Trace As TraceContext

User Obtm informaes sobre o usurio que est fazendo a requisio da pgina. Retorna um objeto do tipo IPrincipal (System.Security.Principal) que possui a propriedade Identity.
Public ReadOnly Property User As IPrincipal

Identity expe as seguintes propriedades:


Propriedade AuthenticationType IsAuthenticated Name Descrio Retorna o tipo de autenticao: None, Windows, Forms ou Passport. Retorna true se o usurio foi autenticado com sucesso, caso contrrio, false. Retorna o nome do usurio autenticado.

26

Captulo 2 Fundamentos do ASP .NET


Exemplo:
response.write (Usurio = & user.identity.name) response.write (</br>Tipo de autenticao = & user.identity.AuthenticationType) if (user.identity.isAuthenticated) then response.write (<br>Usurio autenticado.) else response.write (</br>Usurio no autenticado.) end if

Validators Retorna uma coleo contendo todos os controles de validao da pgina.


Public ReadOnly Property Validators As ValidatorCollection

Visible Dene ou retorna um valor indicando se o objeto Page ser renderizado, ou seja, se a pgina estar visvel (True = default) ou no (False).
Overrides Public Property Visible As Boolean

Exemplo das propriedades da classe Page


<%@ Page Language=VB %> <html> <head> <title> Livro ASP.NET </title> <script language=VB runat=server> Sub Page_Load(Src As Object, E As EventArgs) response.write (<br>Propriedades da Classe Page) response.write (<br> Cache = & Convert.ToString(Page.Cache)) response.write (<br> ClientTarget = & Convert.ToString(Page.ClientTarget)) response.write (<br> EnableViewState = & Convert.ToString(Page.EnableViewState)) response.write (<br> SmartNavigation = & Convert.ToString(Page.SmartNavigation)) response.write (<br> User = & Convert.ToString(Page.User)) End Sub </script> </head> <body> </body> </html>

Propriedades protegidas A classe Page possui a seguinte propriedade protegida, alm das propriedades protegidas herdadas da classe Control: Context Retorna o objeto HttpContext associado pgina.
Overrides Protected ReadOnly Property Context As HttpContext

27

ASP .NET Guia do Desenvolvedor


Mtodos pblicos A classe Page possui os seguintes mtodos pblicos, alm dos mtodos pblicos herdados das classes Control e Object: DesignerInitialize Utilizado por ferramentas de desenvolvimento (RAD) para inicializar valores da instncia da classe Page. GetPostBackClientEvent Retorna uma string que representa a funo script cliente que originou o envio (postback) do formulrio.
Public Function GetPostBackClientEvent( ByVal controle As Control, _ ByVal argumento As String) As String Parmetro controle argumento Descrio Controle que recebe o envio (postback) do evento cliente. Argumento passado para o mtodo IPostBackEventHandler.RaisePostBackEvent.

GetPostBackClientHyperlink Retorna o nome da funo do lado cliente e o ID do controle do servidor que processou a funo.
Public Function GetPostBackClientHyperlink(ByVal controle As Control, _ByVal argumento As String) As String Parmetro controle argumento Descrio Controle do servidor que processar o envio (postback). Argumento passado para o controle do servidor.

GetPostBackEventReference (Sobrecarregado) Retorna uma referncia funo do lado cliente que pode ser inserida em um manipulador de evento cliente. Prottipo 1:
Overloads Public Function GetPostBackEventReference(_ ByVal controle As Control) As String Parmetro controle Descrio Controle do servidor que processar o envio (postback).

Prottipo 2:
Overloads Public Function GetPostBackEventReference(ByVal controle As Control, _ ByVal argumento As String) As String Parmetro controle argumento Descrio Controle do servidor que processar o envio (postback). Argumento passado para o controle do servidor.

28

Captulo 2 Fundamentos do ASP .NET


GetTypeHashCode Retorna um cdigo, por meio de uma funo hash, gerado para objetos Page em tempo de execuo. Esse cdigo nico para o objeto Page dentro da hierarquia de controles (default = 0).
Overridable Public Function GetTypeHashCode() As Integer

IsClientScriptBlockRegistered Retorna um valor indicando se o bloco de script cliente est registrado (True) ou no (False) na pgina. Blocos de script so emitidos no topo da pgina ASP.NET. Para emitir blocos de script no rodap da pgina, deve-se utilizar blocos de script startup.
Public Function IsClientScriptBlockRegistered( ByVal chave As String) As Boolean Parmetro chave Descrio Chave do script cliente.

IsStartupScriptRegistered Retorna um valor indicando se o bloco de script startup cliente j est registrado (True) ou no (False) em uma pgina. Utilizado antes da chamada do mtodo Page.RegisterClientScriptBlock para evitar que o script seja registrado novamente. Blocos de script startup so emitidos no rodap da pgina ASP.NET e devem ser utilizados na inicializao da pgina. Pelo fato de serem inseridos no rodap da pgina, os elementos a que o bloco de script faz referncia necessariamente tero sido carregados antes de o script ser executado. Para emitir blocos de script no topo da pgina, deve-se utilizar Blocos de script.
Public Function IsStartupScriptRegistered( ByVal chave As String) As Boolean Parmetro chave Descrio Chave do script startup cliente.

MapPath Retorna o caminho fsico para um caminho virtual (absoluto ou relativo) correspondente no servidor.
Public Function MapPath(ByVal virtualPath As String) As String Parmetro virtualPath Descrio Especica o caminho virtual a ser mapeado para um caminho fsico. Se o caminho inicia com (/) ou (\), assume ser um caminho virtual absoluto. Caso contrrio, assume ser um caminho relativo ao diretrio fsico no qual o arquivo .aspx est sendo processado.

RegisterArrayDeclaration Declara um array utilizando linguagem de script em uma pgina. Pode ser usado para que o elemento renderizado por um controle de servidor seja inserido em um array no script do lado cliente.

29

ASP .NET Guia do Desenvolvedor


Esse array permite tratar elementos do mesmo tipo de maneira uniforme, facilitando o acesso a estes. Por exemplo, os controles de validao utilizam um array chamado Page_Validators.
Public Sub RegisterArrayDeclaration(ByVal NomeArray As String, _ ByVal ValorArray As String) Parmetro nomeArray valorArray Descrio Nome do array no qual o valor ser declarado. Valor a ser colocado no array.

RegisterClientScriptBlock Insere blocos de script no cliente que podem ser utilizados pelos controles de servidor.
Overridable Public Sub RegisterClientScriptBlock(ByVal chave As String, _ ByVal script As String) Parmetro chave script Descrio Chave nica que identica o bloco de script. Contedo do script que ser inserido no cliente.

Exemplo:
<%@ Page Language=vb %> <script runat=server> Sub Page_Load( sender as Object,e as EventArgs) Script que ser enviado para o cliente Dim strScript as String = <script language=JavaScript> function SubOk() { strScript += alert(O boto foi clicado !!);}< strScript += / strScript += script> If(Not IsClientScriptBlockRegistered(Script1)) RegisterClientScriptBlock(Script1, strScript) End If End Sub </script> <html> <head> </head> <body topmargin=20> <form id=frmTeste runat=server> <input style=WIDTH: 51px; HEIGHT: 24px onclick=SubOk(); type=button size=51 value=Ok /> </form> </body> </html>

RegisterHiddenField Insere um campo oculto (hidden) em um formulrio. O campo ser enviado para a pgina quando o controle HtmlForm for renderizado.
Overridable Public Sub RegisterHiddenField(ByVal nomeCampoOculto As String, _ ByVal valorCampoOculto As String)

30

Captulo 2 Fundamentos do ASP .NET


Parmetro nomeCampoOculto valorCampoOculto Descrio Nome do campo oculto a ser criado. O valor a ser associado propriedade value do campo oculto.

Exemplo:
<%@ Page Language=VB %> <script runat=server> Sub Page_Load(sender As Object, e As EventArgs) RegisterHiddenField(NomeCampoOculto, Valor do Campo) End sub </script>

RegisterOnSubmitStatement Usado para acessar o evento cliente OnSubmit em uma pgina.


Public Sub RegisterOnSubmitStatement(ByVal chave As String, _ ByVal script As String) Parmetro chave script Descrio Chave nica que identica o bloco de script. Bloco de script que ser acionado no evento OnSubmit.

Exemplo:
<%@ Page Language=VB %> <script runat=server> Sub Page_Load(sender As Object, e As EventArgs) RegisterOnSubmitStatement(submit, document.write(O evento Submit foi disparado !!)) End sub </script> <html> <head> </head> <body> <form name=frmTeste runat=server> <input type=submit value=Submit /> </form> </body> </html>

RegisterRequiresPostBack Registra um controle, exigindo o tratamento de envio para o servidor (postback).


Public Sub RegisterRequiresPostBack(ByVal controle As Control)

RegisterRequiresRaiseEvent Registra um controle, exigindo que um evento seja disparado quando o controle for processado na pgina.
Overridable Public Sub RegisterRequiresRaiseEvent( _ ByVal controle As IPostBackEventHandler)

31

ASP .NET Guia do Desenvolvedor


RegisterStartupScript Registra blocos de script startup em uma pgina, evitando que blocos duplicados de cdigo de script sejam enviados ao cliente.
Overridable Public Sub RegisterStartupScript(ByVal chave As String, _ ByVal script As String) Parmetro chave script Descrio Chave nica que identica o bloco de script. Contedo do bloco de script.

RegisterViewStateHandler Utilizado para persistir o View State de uma pgina. Normalmente somente o objeto HtmlForm chama esse mtodo.
Public Sub RegisterViewStateHandler()

Validate Faz com que todos os controles de validao contidos em uma pgina executem suas validaes. Esse mtodo executado pelos controles que possuem a propriedade CausesValidation com valor True.
Overridable Public Sub Validate()

VerifyRenderingInServerForm Utilizado para conrmar se um controle que requer um formulrio (HtmlForm) foi devidamente inserido nele. Se o controle no estiver entre as tags de formulrio, uma exceo ser gerada.
Overridable Public Sub VerifyRenderingInServerForm(ByVal controle As Control)

Mtodos protegidos A classe Page possui os seguintes mtodos protegidos, alm dos mtodos protegidos herdados das classes Control, TemplateControl e Object: CreateHtmlTextWriter Cria um objeto obj para renderizar o contedo da pgina.
Overridable Protected Function CreateHtmlTextWriter(ByVal obj As TextWriter) As HtmlTextWriter

DeterminePostBackMode Determina o tipo de solicitao feito para a pgina.


Overridable Protected Function DeterminePostBackMode() As NameValueCollection

LoadPageStateFromPersistenceMedium Carrega as informaes de estado para o objeto Page. Esse mtodo deve ser sobreescrito para que o estado possa ser carregado com outra fonte que no seja um campo oculto.
Overridable Protected Function LoadPageStateFromPersistenceMedium() As Object

32

Captulo 2 Fundamentos do ASP .NET


RaisePostBackEvent Notica o controle que causou o envio de que ele deve atender a um evento.
Overridable Protected Sub RaisePostBackEvent(ByVal sourceControl As IPostBackEventHandler, ByVal eventArgument As String)

SavePageStateToPersistenceMedium Salva qualquer informao de View State da pgina por meio do objeto especicado em viewState.
Overridable Protected Sub SavePageStateToPersistenceMedium(ByVal viewState As Object)

Eventos A classe Page possui os seguintes eventos pblicos herdados das classes TemplateControl e Control, listados pela ordem de execuo: Init Ocorre quando a pgina inicializada. o primeiro passo no ciclo de vida da pgina e qualquer informao de inicializao pode ser colocada nesse evento. Informao de View State no est disponvel nesse evento (pois ainda no foi gerada), assim como o acesso a outros controles da pgina no deve ser feito, pois estes ainda no esto disponveis durante esse evento (herdado da classe Control). Load Ocorre toda vez que a pgina carregada. Utilize a propriedade IsPostBack para vericar se a primeira vez que a pgina carregada (herdado da classe Control). DataBinding Ocorre quando o mtodo DataBind chamado na pgina. O mtodo DataBind vincula uma fonte de dados ao controle (herdado da classe Control). PreRender Ocorre antes que qualquer sada seja enviada para o browser. Mudanas no estado do controle (View State) podem ser atualizadas durante esse evento (herdado da classe Control). Unload Ocorre toda vez que o processamento da pgina nalizado. Qualquer ao nal como fechar arquivos, fechar conexes com banco de dados ou descartar objetos pode ser feita durante esse evento (herdado da classe Control). Dispose Ocorre quando o objeto Page liberado da memria (herdado da classe Control).

33

ASP .NET Guia do Desenvolvedor


Demais eventos Alm dos eventos listados anteriormente, os eventos a seguir (no determinsticos) podem ocorrer em uma pgina ASP.NET: AbortTransaction Ocorre quando cancelada uma transao (herdado da classe TemplateControl). CommitTransaction Ocorre quando uma transao concluda com sucesso (herdado da classe TemplateControl). Error Ocorre quando um erro (exception) no tratado detectado (herdado da classe TemplateControl).

Sintaxe das pginas ASP.NET


Alm de contedo esttico, as pginas ASP.NET suportam oito diferentes tags com suas respectivas sintaxes: Sintaxe de gerao de cdigo: <% %> e <%= %> Utilizada para delimitar blocos de gerao de cdigo (rendering code). A tag <%= Texto %> equivale <% Response.write (Texto) %> em VB.NET. Exemplo:
<%=Bloco de gerao de cdigo%>

Sintaxe de declarao de cdigo: <script runat=server> Utilizada para delimitar blocos de declarao de cdigo que contm elementos que sero membros (mtodos ou propriedades) da classe Page quando a pgina for compilada. Todas as funes e variveis globais da pgina devem ser declaradas dentro dessa tag. Exemplo:
<%@ Page Language=vb %> <script runat=server> Bloco de declarao de cdigo Sub SubmitBtn_Click(Sender As Object, E As EventArgs) lblMsg.Text = Oi & Nome.Text & . Voc mora na & Endereco.Text & . End Sub </script> <html> <head>

34

Captulo 2 Fundamentos do ASP .NET


</head> <body> <form runat=server> <table border=0> <tr> <td>Nome</td> <td><asp:TextBox id=Nome runat=server></asp:TextBox></td> </tr> <tr> <td>Endereo</td> <td><asp:TextBox id=Endereco runat=server Columns=30 Rows=5 TextMode=MultiLine></asp:TextBox></td></tr> <tr> <td></td> <td><asp:Button id=btnSubmit onclick=SubmitBtn_Click runat=server text=Submit></asp:Button></td></tr> </table> <p><asp:Label id=lblMsg runat=server></asp:Label></p> </form> </body> </html>

Sintaxe de controle de servidor Web Utilizada para declarar Controles de Servidor Web. Exemplo:
<asp:label id=lblMensagem runat=server/>

Sintaxe de controle HTML Utilizada para declarar controles HTML que sero processados no servidor. Distingue-se de uma tag HTML-padro por meio do atributo runat=server. Exemplo:
<span id=spnMensagem runat=server/>

Sintaxe de Data Binding: <%# %> O cdigo declarado dentro da tag <%# %> executado somente quando o mtodo DataBind do container chamado. Exemplo:
<asp:TextBox id=txtNome runat=server Nome=<%# DataView1(0)(des_nome_usuario) %>> </asp:TextBox>

Sintaxe de objeto: <object runat=server /> Utilizado para declarar e criar instncias de objetos. Exemplo:
<object id=items class=System.Collections.ArrayList runat=server/>

35

ASP .NET Guia do Desenvolvedor


Sintaxe de comentrio: <% comentrio%> Utilizada para comentar ou desabilitar o cdigo dentro dos blocos de gerao de cdigo da pgina (tags <% %>). O contedo dessa tag no processado. Para comentar o cdigo dentro dos blocos de declarao de cdigo (<script runat=server>) deve-se utilizar o estilo de comentrio da linguagem de programao que estiver sendo empregada. Por exemplo, para o VB.NET, deve-se utilizar um caractere de aspas simples para comentar uma linha de cada vez. Exemplo:
<%-Dim i as integer for i=0 to 10 response.write (Comentrio : esse cdigo no ser executado !) next --%>

Sintaxe de Server-Side Include: <! #Include File=LibData.inc > Permite a incluso de contedo contido em outro arquivo, em qualquer lugar na pgina ASP.NET. Por default, essa tag pode ser utilizada somente a partir de arquivos com as extenses .shtml, .shtm, .stm, .asp, .asa, .asax e .aspx. Pode-se alterar essas extenses por meio do Internet Services Manager. Um arquivo pode ser includo por meio de seu caminho fsico ou virtual.
<! #include tipoCaminho = nomeArquivo> Parmetro tipoCaminho le Descrio O tipo do caminho do arquivo. Pode ser File ou Virtual. Indica que o parmetro nomeArquivo um caminho relativo a partir do diretrio contendo o arquivo com a diretiva include. O arquivo include pode estar no mesmo diretrio ou em um subdiretrio, porm no pode estar em um diretrio acima do arquivo que contm a diretiva include. Indica que o parmetro nomeArquivo um caminho virtual a partir do diretrio virtual da aplicao. O nome do arquivo cujo contedo ser includo na pgina corrente. Deve conter a extenso do arquivo e deve estar denido entre aspas ().

virtual nomeArquivo

Exemplo:
<! #include file = Cabecalho.inc >

36

Captulo 2 Fundamentos do ASP .NET

Principais diretivas de pgina


As diretivas de pgina denem parmetros opcionais utilizados pelo ASP.NET para o processamento das pginas e User Controls. Podem ser inseridas em qualquer lugar na pgina com a seguinte sintaxe:
<%@ diretiva atributo=valor [atributo=valor ]%>

As seguintes diretivas podem ser utilizadas: @ Page Dene parmetros especcos de compilao e processamento para a pgina. Principais atributos:
Atributo AspCompat Descrio Se True, permite o acesso a componentes COM com modelo de thread single-threaded apartment (STA) (VB 6.0) (default = false). Buffer Habilita (true) ou desabilita (false) o buffer da pgina (default = true). ClientTarget Indica para que tipo de browser os elementos da pgina devem ser renderizados. Debug Utilizada para colocar a pgina em modo de debug (default = false). EnableViewState Habilita (true) ou desabilita (false) o controle de estado dos elementos da pgina (default = true). ErrorPage Especica a pgina de erro. Explicit Obriga (true) ou no (false) a declarao de variveis (default = false). Inherits Indica a classe utilizada pela pgina. Language Especica a linguagem utilizada na pgina nas tags <%%>. Src Especica o arquivo contendo o cdigo-fonte. Trace Habilita (true) ou desabilita (false) o rastreamento para a pgina (default = false).

@ Control Dene parmetros especcos de compilao e processamento para o User Control (.ascx).
<%@ Control atributo=valor [atributo=valor ] %>

Da mesma forma que a diretiva @ Page, possui uma srie de atributos:


Atributo Descrio AutoEventWireup Indica se os eventos da pgina esto ligados automaticamente (default=True). ClassName Especica o nome da classe da pgina. CompilerOptions String contendo as opes de compilao para a pgina. Debug Indica se a pgina deve ser compilada com smbolos de debug. Description Descrio da pgina. EnableViewState Indica se o View State do User Control ser mantido entre solicitaes (True = default). Explicit Determina se a pgina ser compilada utilizando o comando Option Explicit do Visual Basic. Inherits Dene a classe de code-behind do User Control. Language Especica a linguagem utilizada na pgina.

37

ASP .NET Guia do Desenvolvedor


Atributo Strict Src WarningLevel Descrio (cont.) Determina se a pgina ser compilada utilizando o comando Option Strict do Visual Basic. Especica o nome do arquivo-fonte da classe code-behind do User Control. Indica o nvel de advertncia do compilador (0 a 4).

@ Import Importa um namespace para uma pgina. Caso a diretiva @Import seja utilizada no arquivo Global.asax, o namespace ser importado para toda a aplicao, e suas classes estaro disponveis para todas as pginas. O namespace importado pode ser parte do Framework .NET ou um namespace denido pelo usurio. No preciso importar um namespace para utilizar seus objetos. A importao apenas facilita o acesso ao objeto, porm se pode referenciar o objeto utilizando seu namespace completo, como, por exemplo: Dim obj as System.IO.File.
<%@ Import namespace=nomeNamespace %>

Exemplo:
<%@ Import Namespace=System.Net %>

Os seguintes namespaces so importados automaticamente para todas as pginas ASP.NET: System System.Collections System.Collections.Specialized System.Conguration System.IO System.Text System.Text.RegularExpressions System.Web System.Web.Caching System.Web.Security System.Web.SessionState System.Web.UI System.Web.UI.HtmlControls System.Web.UI.WebControls @ Implements Indica que a pgina ou User Control implementar uma interface especca.
<%@ Implements interface=NomeInterface %>

38

Captulo 2 Fundamentos do ASP .NET


@ Assembly Vincula um assembly pgina corrente durante a compilao, tornando todas as classes do assembly disponveis para serem utilizadas na pgina. Caso a diretiva seja utilizada em um arquivo Global.asax, as classes estaro disponveis para toda a aplicao. A referncia a um assembly feita em tempo de compilao (early binding). A partir do momento que a pgina referenciando o assembly for compilada, o assembly carregado e ca disponvel para toda a aplicao, permitindo vnculo tardio (late binding).
<%@ Assembly Name=NomeAssembly %> <%@ Assembly Src=caminho %> Atributo Name Src Descrio Uma string que representa o nome do assembly a ser vinculado na pgina. A extenso do arquivo no deve ser includa. O caminho do arquivo do assembly a ser vinculado.

No possvel utilizar os atributos Name e Src na mesma diretiva @Assembly. Para utiliz-los, deve-se utilizar uma diretiva para cada atributo. Os assemblies armazenados no diretrio /Bin, abaixo do diretrio raiz da aplicao, so automaticamente importados para a aplicao. Para impedir que isso acontea, deve-se retirar a seguinte linha do arquivo Web.cong:
<add assembly=*/>

O arquivo Web.cong tambm pode ser utilizado para importar um assembly para uma aplicao. Exemplo:
<%@ Assembly Name=NomeAssembly %> <%@ Assembly Src=ArquivoFonte.vb %>

@ OutputCache Dene a poltica de cache para a pgina ou User Control, permitindo o armazenamento da sada da pgina ou User Control no cache do servidor, ou seja, a sada gravada em disco rgido na localizao especicada em Location. O cache de sada pode ser utilizado para se obter ganhos de performance em pginas muito acessadas.
<%@ OutputCache Duration=Tempo [Location=Localizao] %> Atributo Duration Location Descrio Tempo (em segundos) em que a pgina armazenada no cache. Especica o local de armazenamento da sada (Any, Client, Downstream, None, Server).

39

ASP .NET Guia do Desenvolvedor

Code Behind
O conceito de Code behind (Por trs do Cdigo) utilizado para separar as partes de apresentao e lgica do cdigo de uma pgina ASP.NET, utilizando herana e permitindo a reutilizao de cdigo. Para utilizar o Code Behind preciso criar uma classe que derive da classe Page (System.Web.UI.Page) ou da classe UserControl (System.Web.UI.UserControl), se for um User Control. Pode-se pr todo o cdigo que seria colocado dentro do arquivo .aspx dentro da classe do arquivo do Code Behind e deve-se declarar os controles que sero utilizados na pgina .aspx como pblicos no arquivo de Code Behind. No exemplo a seguir, o controle TextBox chamado Nome no arquivo .aspx declarado como pblico no arquivo do Code Behind. Isso garante que seja possvel tratar as propriedades e os eventos dos controles. Em seguida, deve-se adicionar os atributos Inherits e Src ao arquivo .apx, especicando o nome da classe declarada no Code Behind e sua localizao, respectivamente.

Figura 2.5 Code Behind: separao da apresentao e lgica de uma pgina em arquivos distintos.

40

Captulo 2 Fundamentos do ASP .NET


Exemplo de Code Behind: Primeiro deve ser criado o arquivo com o Code Behind (MeuFonteCodeBehind.vb):
Option Strict Off Imports System Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.HtmlControls Public Class MeuCodeBehind: Inherits Page Public Nome As TextBox Public spnSpan1 As HtmlGenericControl Public Sub SubmitBtn_Click(Sender As Object, E As EventArgs) spnSpan1.InnerHtml = Ol, & Nome.Text & . End Sub End Class

E em seguida, pode-se utilizar o cdigo em uma pgina ASP.NET, como a seguir:


<%@ Page Inherits=MeuCodeBehind Src=MeuFonteCodeBehind.vb %> <html> <body> <form runat=server> <table> <tr> <td> Nome: </td> <td> <asp:textbox id=Nome runat=server/> </td> </tr> <tr> <td></td> <td><asp:button id=btnOk text=Clique aqui OnClick=SubmitBtn_Click runat=server/></td> </tr> <tr> <td></td> <td><span id=spnSpan1 runat=server /></td> </tr> </table> </form> </body> </html>

41

ASP .NET Guia do Desenvolvedor

Aplicao ASP.NET

Uma aplicao ASP.NET o conjunto de todos os arquivos, pginas, handlers, mdulos e cdigos executveis que podem ser acessados por meio de um diretrio virtual e seus subdiretrios em um servidor Web. Aplicaes ASP.NET so entidades totalmente separadas, ou seja, cada aplicao tratada dentro de um domnio de aplicao do CLR (runtime). Isso signica que cada aplicao pode manter suas prprias caractersticas de processamento e conguraes, por meio dos arquivos Global.asax e Web.Cong.

Cache de Assembly
Uma aplicao ASP.NET utiliza o diretrio \bin chamado de Cache de Assembly, para armazenar os arquivos compilados (DLLs) utilizados. Cada aplicao tem seu prprio diretrio, ou pode herdar um de seu diretrio-pai. Os assemblies colocados nesse diretrio cam automaticamente disponveis para a aplicao.

O arquivo Global.asax
um arquivo opcional com a nalidade de armazenar informaes ou objetos que sero utilizados globalmente pela aplicao. O Global.asax deve residir no diretrio raiz da aplicao e possui sintaxe e utilidade similar ao arquivo Global. asp do ASP 3.0. O Global.asax um arquivo em formato-texto que obedece s mesmas regras de compilao e execuo de um arquivo .aspx. Quando compilado, transformado em IL como classe derivada de HttpAplication. Os arquivos Global.asa e Global.asax podem existir em uma mesma aplicao, e as informaes contidas no arquivo Global.asa somente sero visveis para pginas com extenso .asp e vice-versa. Por segurana, o arquivo Global.asax no pode ser executado a partir do browser.

Partes do arquivo Global.asax


Um arquivo Globa.asax pode ser composto dos seguintes elementos: Diretivas de aplicao: especica parmetros opcionais de compilao e execuo das pginas ASP.NET. Blocos de cdigo: dene os mtodos e propriedades que faro parte da classe HttpApplication, que gerada como resultado da compilao do arquivo Global. asax. Declaraes <Object>: declarao e criao de objetos. Diretivas Server-Side: inclui o contedo de um arquivo especicado no arquivo Global.asax.

42

Captulo 2 Fundamentos do ASP .NET


Diretivas de aplicao Trs tipos de diretivas podem ser utilizadas: Application, Import e Assembly. @Application Dene atributos especcos da aplicao utilizados pelo compilador. Sintaxe:
<%@ Application atributo=valor [atributo=valor ]%> Atributo Description Inherits Descrio Descrio em formato-texto da aplicao. Esse valor ignorado pelo parser e compilador do ASP.NET. Nome da classe a ser derivada. Por padro, o arquivo Global.asax compilado como uma classe derivada de HttpApplication, porm possvel especicar, por meio desse atributo, uma outra classe, desde que ela tambm seja derivada da classe HttpApplication.

Exemplo: @Import

<%@ Application Inherits=ObjApp.ClassApp Description=Descrio da Aplicao %>

Ver descrio dessa diretiva na pgina 38. @Assembly Ver descrio dessa diretiva na pgina 39. Blocos de cdigo Blocos de cdigo permitem a denio de variveis, mtodos e eventos que faro parte da classe HttpApplication, resultado da compilao do arquivo Global.asax. Sintaxe:
<script runat=server [language=linguagem] [ src=nomeArquivoFonte]> Cdigo </script> Atributo runat language src Descrio Especica que o cdigo ser executado no servidor. A linguagem utilizada no bloco de cdigo corrente. Se no for especicada, a linguagem default ser utilizada (denida no arquivo de congurao da aplicao). O nome do arquivo contendo o cdigo. Quando utilizado, qualquer cdigo dentro do bloco ignorado.

43

ASP .NET Guia do Desenvolvedor


Declaraes <Object> A tag <Object> pode ser utilizada para declarar e criar objetos de aplicao e sesso. A tag pode ser utilizada de trs diferentes formas, dependendo do tipo do objeto a ser criado:
<object id=identicador runat=server scope=escopo class=NomeClasse> <object id=identicador runat=server scope=escopo progid=ProgID do Componente/> <object id=identicador runat=server scope=escopo classid=ClassID do Componente/> Atributo id Descrio Identicador nico dentro da pgina para o objeto a ser criado e usado para referenciar o objeto no cdigo. runat Especica que o cdigo ser executado no servidor. scope Escopo do objeto a ser criado (default=pipeline). pipeline Disponvel somente dentro da solicitao (request). application Disponvel para toda a aplicao e o objeto armazenado dentro da coleo HttpApplicationState. session Disponvel dentro da sesso e o objeto armazenado dentro da coleo HttpSessionState. class Classe da qual ser criada uma instncia. progID Identicador programtico do componente (COM) a ser instanciado. classID CLSID do componente (COM) a ser instanciado.

Os atributos class, progID e classId so mutuamente exclusivos e geram um erro quando declarados dentro de uma mesma tag <object>. Exemplo:
<object id=objItens class=System.Collections.ArrayList runat=server/>

Eventos do Global.asax O arquivo Global.asax suporta os eventos expostos pela classe HttpApplication, alm dos eventos j suportados nas verses anteriores. Os eventos podem ser declarados da seguinte maneira:
Application_EventName (Argumentos do Evento)

A seguir descreveremos os eventos disponveis que podemos utilizar no global. asax: Application_Start Ocorre na primeria vez em que o usurio solicita uma pgina da aplicao. Application_End Ocorre quando o servio Web parado no servidor. Session_Start Ocorre quando um novo usurio solicita uma pgina da aplicao, ou seja, quando uma sesso de usurio iniciada.

44

Captulo 2 Fundamentos do ASP .NET


Session_End Ocorre quando a sesso de usurio encerrada por timeout de sesso (default=20 minutos) ou pela execuo do mtodo Abandon (Session.Abandon). Application_AcquireRequestState Ocorre quando o ASP.NET obtm o estado corrente associado solicitao corrente. Application_AuthenticateRequest Ocorre quando a identidade do usurio estabelecida. Pode ser usado para executar qualquer cdigo antes que o usurio seja autenticado. Application_AuthorizeRequest Ocorre quando a autorizao do usurio vericada. Pode ser utilizado para executar qualquer cdigo antes de o usurio ter autorizao para um recurso, como, por exemplo, autorizao para acesso a uma URL. Application_BeginRequest Ocorre toda vez que uma solicitao feita ao servidor Web. Application_Disposed Ocorre quando a cadeia de execuo de uma solicitao foi completada. Application_EndRequest o ltimo evento a ser executado no atendimento a uma solicitao. Application_Error Ocorre quando um erro no tratado encontrado. Application_PostRequestHandlerExecute Ocorre quando um handler ASP.NET (pgina ou Web Service) termina seu processamento. o primeiro evento disponvel aps o handler concluir seu trabalho. Application_PreRequestHandlerExecute Ocorre antes do incio de execuo de um handler ASP.NET. Application_PreSendRequestContent Ocorre antes do envio de contedo para o cliente. Application_PreSendRequestHeaders Ocorre antes do envio de cabealhos HTTP para o cliente. Application_ReleaseRequestState Ocorre depois que o ASP.NET termina a execuo de todos os handlers.

45

ASP .NET Guia do Desenvolvedor


Application_ResolveRequestCache Ocorre quando o ASP.NET completa um evento de autorizao deixando os mdulos de cache atenderem solicitao, em vez da pgina ou Web Service. Application_UpdateRequestCache Ocorre quando o ASP.NET termina a execuo de um handler com a nalidade de deixar que mdulos de cache armazenem respostas que sero utilizadas para solicitaes subseqentes a partir do cache. Exemplo: O seguinte exemplo ilustra como utilizar o evento Error para gravar informao de erro no Log de eventos do NT:
<%@ import Namespace=System.Diagnostics %> Dim NomeLog As String = LogTesteAplicacao Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) Cria evento If (Not EventLog.SourceExists(NomeLog)) Then EventLog.CreateEventSource(NomeLog, NomeLog) End If End Sub Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) Dim strMensagem As String = Url & Request.Path & Erro: & Me.Error.ToString() Cria entrada no log de eventos Dim Log As New EventLog() Log.Source = NomeLog Log.WriteEntry(strMensagem, EventLogEntryType.Error) End Sub </script>

Diretivas Server-Side Include Como em uma pgina ASP.NET comum, a incluso de contedo contido em outro arquivo permitida no arquivo Global.asax e realizada por meio da tag Include. Para mais detalhes sobre a sintaxe veja a pgina 36.

46

Captulo 2 Fundamentos do ASP .NET

Arquivo Web.Cong
O arquivo Web.Cong um arquivo-texto em formato XML utilizado para armazenar informaes de congurao do servidor Web, tais como habilitar o estado de sesso (session state), session timeout, buffering, linguagens default, ou mesmo armazenar outras informaes de congurao personalizadas, cujos pares de chaves/valores podem ser criados e inseridos no arquivo. No ASP 3.0 essas conguraes eram feitas por meio do Internet Information Server (IIS), o que dicultava o acesso programtico a estas. No ASP.NET possvel copiar a congurao do servidor Web com seu cdigo e contedo, como tambm alterar essas conguraes via FTP. Da mesma maneira que o arquivo Global.asax, o Web.Cong no um arquivo exigido para que a aplicao funcione. Caso ele no seja encontrado na hierarquia de diretrios da aplicao, ser utilizado um arquivo chamado Machine.Cong (WINNT\Microsoft.NET\Framework\verso\CONFIG\Machine.cong), com conguraes predenidas que servem para todo o servidor Web. Pode-se criar vrios arquivos de congurao (todos chamados Web.cong), os quais podem ser colocados em diferentes diretrios da aplicao, e suas conguraes tero efeito sobre o diretrio corrente e seus respectivos subdiretrios. Arquivos de conguraes em diretrios-lho herdam conguraes denidas em diretriospai, e tambm podem alterar ou sobrepor essas conguraes. Esse sistema hierrquico de herana de conguraes baseado no caminho do diretrio virtual, e no no caminho fsico. Da mesma maneira que o arquivo Global.asax, por segurana, o arquivo Web. Cong no pode ser acessado via browser. Estrutura do arquivo Web.Cong O arquivo Web.Cong segue regras de sintaxe XML. Toda informao de congurao deve car entre as tags <configuration> e </configuration>, que so agrupadas em duas reas principais: seo de declarao do handler <configSections> e seo de denio de congurao do handler <handlerName>. Um handler uma classe .NET que implementa a interface IConfigurationSectionHandler.
<configuration> <configSections> <section name=handler_1/> <section name=handler_2/> </configSections> < handler_1> configurao do handler_1 </handler_1> < handler_2> configurao do handler_2 </handler_2> </configuration>

47

ASP .NET Guia do Desenvolvedor

Conguraes-padro do ASP.NET
O ASP.NET possui os seguintes handlers-padro que podem ser utilizados para denir as conguraes no arquivo Web.Cong:
Seo <httpModules> <httpHandlers> Descrio Congura mdulos de HTTP dentro de uma aplicao, os quais participam no processamento de cada solicitao. Utilizaes comuns incluem segurana e conexo. Mapeia URLs de entrada em classes IHttpHandler. Os subdiretrios no herdam essas conguraes. Responsvel tambm pelo mapeamento de URLs de entrada em classes IHttpHandlerFactory. Os dados representados nas sees <HttpHandlerFactories> so hierarquicamente herdados por subdiretrios. Congura o estado de sesso. Dene as conguraes de globalizao de uma aplicao. Dene as conguraes de compilao de uma aplicao. Congura o rastreamento de uma aplicao. Congura o modelo de processamento do ASP.NET no servidor Web. Dene as conguraes do componente de capacidades do browser.

<sessionState> <globalization> <compilation> <trace> <processModel> <browserCaps>

Exemplo de arquivo Web.Cong:


<?xml version=1.0 encoding=utf-8 ?> <configuration> <appSettings> <add key=dsn value=localhost;uid=NomeUsuario;pwd=; /> <add key=msmqserver value=server\srvQueue /> </appSettings> <system.web> <! Compilation > <compilation defaultLanguage=vb debug=true /> <! Custom Errors > <customErrors mode=On defaultRedirect=PaginaErroCustomizada.htm /> <! Tracing > <trace enabled=true requestLimit=10 pageOutput=false traceMode=SortByTime localOnly=true /> <! Session State > <sessionState mode=StateServer cookieless=false timeout=20 /> </system.web> </configuration>

48

Captulo 2 Fundamentos do ASP .NET

Acessando informaes de congurao nas pginas


Pode-se acessar as conguraes denidas no arquivo Web.Cong, a partir de uma pgina, por meio dos objetos intrnsecos ASP.NET. A seguinte linha de cdigo d acesso ao atributo cookieless da seo <sessionState>:
Dim nocookies As Boolean = Session.IsCookieless

Ou por meio do mtodo GetConfig da coleo ConfigurationSettings:


Dim config As NameValueCollection = ConfigurationSettings.GetConfig(mysection) Response.Write(O valor da chave um & config(key_one) & <br>)

Conguraes de aplicao armazenadas na seo <appSettings> podem ser acessadas da seguinte forma:
Dim dsn As String = ConfigurationSettings.AppSettings(dsn)

Gerenciamento de estado da aplicao


Pginas ASP.NET so baseadas no protocolo HTTP, e dessa forma no persiste o estado entre solicitaes (stateless). Para resolver esse problema, o ASP.NET oferece as seguintes alternativas: Gerenciamento de estado no lado Cliente Nenhuma informao de estado mantida no servidor entre as solicitaes. A informao ca armazenada na pgina ou no computador-cliente. Cookies Arquivo-texto armazenado no computador do usurio que pode conter at 4.096 bytes. O cookie um dos mtodos utilizados pelo ASP.NET para identicar a sesso do usurio. Para trabalhar com cookies, necessrio utilizar a classe HttpCookie para armazen-los, e as classes HttpResponse e HttpRequest para envi-los e receb-los, respectivamente. Exemplo:
L o cookie armazenado no cliente If Request.Cookies(UserName) = Null Then Dim cookie As New HttpCookie(NomeUsuario) cookie.Values.Add(NomeUsuario, Isabela) ... Envia o cookie para o cliente Response.AppendCookie(cookie) End If

Campos ocultos (Hidden) Campos ocultos no cam visveis na pgina e podem ser utilizados para armazenar informaes especcas da pgina. O contedo de um campo oculto enviado na coleo Form. O ASP.NET possui o controle HtmlInputHidden que oferece funcionalidade para campos ocultos.

49

ASP .NET Guia do Desenvolvedor


View State Recurso utilizado pelo ASP.NET para descrever o estado de um controle de servidor em um dado momento. utilizado para persistir os valores dos controles, por exemplo, contedos de caixa de texto e seleo de botes de rdio entre o envio e retorno de uma pgina (postback). O ASP.NET automaticamente monitora o View State. Isso signica que se voc preencher um formulrio HTML e clicar em submit, os valores ainda estaro na pgina quando esta voltar do processamento no servidor. O ASP.NET implementa o View State incorporando campos HTML ocultos na pgina sempre que um controle de servidor for utilizado (runat=server). Alm disso, pode-se armazenar valores no View State por meio do objeto StateBag, da seguinte maneira:
ViewState(Nome da varivel) = valor

O StateBag descartado assim que o usurio deixa a pgina. Os valores so mantidos desde que o Post seja feito para a mesma pgina. Query Strings Possibilita o envio de pequenos volumes de dados de uma pgina para outra. Para mais detalhes, consultar a propriedade HttpRequest.QueryString, na pgina 75. Gerenciamento de estado no lado Servidor O gerenciamento de estado no servidor pode ser feito por meio dos objetos intrnsecos Application (HttpApplicationState) e Session (HttpSessionState). Alm disso, pode-se fazer o gerenciamento de estado da aplicao utilizando o banco de dados. O armazenamento de estado em um banco de dados especialmente til para a manuteno do estado em um perodo de tempo maior ou quando o estado deve ser persistido mesmo que o servidor Web tenha que ser reinicializado. O armazenamento em banco normalmente utilizado em conjunto com cookies.

50

Captulo 2 Fundamentos do ASP .NET

Depurando pginas ASP.NET

O suporte para depurao e tratamento de erros, chamados de excees, foi signicativamente melhorado no ASP.NET. Pode-se utilizar ferramentas de depurao e rastreamento, como o CLR Debugger e o Trace. O rastreamento a coleta de informaes sobre a pgina baseado nas solicitaes feitas para esta. J a depurao refere-se execuo passo-a-passo do cdigo, com a possibilidade da denio de breakpoints e visualizao do contedo de variveis. Alm disso, pode-se denir pginas de erro personalizadas, como tambm utilizar a estrutura de tratamento de excees Try e Catch.

Try e Catch
As instrues Try e Catch so utilizadas para capturar erros e trat-los dentro da pgina. Pode-se tambm utilizar a palavra-chave Throw para gerar erros personalizados, da mesma maneira que o comando err.raise era utilizado no Visual Basic 6.0. Sintaxe:
Try [ bloco de cdigo onde poder ocorrer um erro ] [ Catch [ exceo [ As type ] ] [ When expresso ] [ bloco de tratamento do erro] ] [ Exit Try ] ... [ Finally [ bloco a ser executado incondicionalmente] ] End Try

Exemplo:
cria o objeto OleDbCommand aqui Try objCmd.Connection.Open Catch objEx as OleDbException Trata exceo de OleDb Catch objEx as Exception Trata exceo genrica End Try

As excees so agrupadas hierarquicamente. A classe Exception (System) a classe-base para todas as excees. Todas as excees so mapeadas em classes .NET.

51

ASP .NET Guia do Desenvolvedor

Pgina de erro personalizada


Para especicar uma pgina de erro-padro para uma aplicao ASP.NET, necessrio incluir a seguinte linha no arquivo Web.Cong no diretrio raiz da aplicao:
<configuration> <system.web> <customErrors mode=On defaultRedirect=paginaErro.htm/> </system.web> </configuration>

O atributo mode especica quando a pgina de erro personalizada ser exibida:


Valor On Off Remoteonly Descrio A pgina de erro ser exibida quando ocorrer um erro. A pgina de erro no ser exibida (default). A pgina de erro ser exibida somente para as estaes, enquanto no servidor ser exibida a pgina de erro default do ASP.NET que fornece informaes de depurao.

Pode-se denir tambm pginas diferentes para cada erro, como a seguir:
<configuration> <system.web> <customerrors defaultredirect=paginaErroGeral.aspx mode=On> <error statuscode=500 redirect=/errorpages/paginaerro500.aspx /> <error statuscode=404 redirect=/errorpages/paginaerro404.aspx /> <error statuscode=403 redirect=/errorpages/paginaerro403.html /> </customerrors> </system.web> </configuration>

Alm disso, possvel especicar pginas de erro individuais para cada pgina, utilizando o atributo ErrorPage da diretiva @Page no incio da pgina:
<%@Page ErrorPage=/errorpages/paginanerro.aspx%>

52

Captulo 2 Fundamentos do ASP .NET

Trace
O trace um recurso do ASP.NET para coleta de informaes sobre a execuo da pgina, como tempos de execuo, objetos utilizados, cabealhos HTTP e variveis do servidor. Essas informaes podem ser exibidas na prpria pgina ou em uma pgina separada. Pode-se tambm inserir comandos de trace nas pginas, da mesma maneira que o Response.write era utilizado nas verses anteriores. Porm, com o trace, no necessrio remover manualmente essas informaes para que elas no quem visveis para o usurio, basta simplesmente desabilitar o trace. O objeto Trace (classe TraceContext) oferece mtodos e propriedades para o rastreamento de execuo de cdigo. Pode-se utiliz-lo da seguinte forma em uma pgina ASP.NET:
Trace.Write (categoria, mensagem) ou Trace.Warn (categoria, mensagem) Parmetro categoria mensagem Descrio (String) Utilizada para agrupar ou identicar informaes de rastreamento. (String) Mensagem a ser exibida.

As mensagem gravadas com Trace.Warn aparecero em vermelho na pgina de trace. Rastreamento no nvel de pgina O rastreamento no nvel de pgina pode ser ativado por meio do atributo Trace da diretiva @Page:
<%@Page Language=Vb Trace=true %>

O rastreamento no nvel de pgina sobrepe a congurao de rastreamento denida no arquivo Web.Cong. Quando a pgina executada, uma tabela adicionada ao rodap dela contendo informaes de rastreamento da pgina, como: Id da sesso, hora em que a solicitao foi processada, tempo de execuo de cada parte da pgina (o que til para otimizaes), rvore contendo os controles instanciados na pgina, coleo Cookies, cabealhos HTTP e coleo ServerVariables. Essas mesmas informaes esto disponveis por meio do utilitrio trace.axd quando o rastreamento no nvel de aplicao est habilitado.

53

ASP .NET Guia do Desenvolvedor


Rastreamento no nvel de aplicao Para habilitar o recurso de rastreamento para uma aplicao ASP.NET inteira, necessrio incluir a seguinte linha no arquivo Web.Cong no diretrio raiz da aplicao:
<trace enabled=false requestLimit=10 pageOutput=false traceMode=SortByTime localOnly=true /> Atributo Enabled PageOutput True Descrio Habilita (true) ou desabilita (false)o rastreamento (default=False).

Se a informao de rastreamento exibida na prpria pgina e na pgina trace.axd. False Se for exibida somente na pgina trace.axd (default). RequestLimit Nmero de solicitaes a serem armazenadas no servidor com informaes de rastreamento (default=10). TraceMode Indica a ordem de exibio das informaes de rastreamento. SortByTime Exibe ordenando pela ordem de processamento (default). SortByCategory Exibe ordenando alfabeticamente e agrupada por categorias denidas pelo usurio. LocalOnly true se a pgina trace.axd est disponvel somente no servidor; false, caso contrrio (default).

Para acessar as informaes de ratreamento, deve-se utilizar o utilitrio trace.axd. Para acess-lo basta digitar o caminho: http://host/Nome da Aplicao/trace.axd

Figura 2.6 Informaes de rastreamento do utilitrio trace.axd.

54

Captulo 2 Fundamentos do ASP .NET

Debug
O Framework .NET oferece a ferramenta de debug CLR Debugger (\Microsoft.NET\FrameworkSDK\GuiDebug\DbgCLR.exe), que aproveita a natureza compilada das pginas ASP.NET e oferece recursos de depurao de cdigo, como a utilizao de breakpoints e a visualizao do contedo de variveis e expresses. Para utilizar o CLR Debugger, deve-se seguir os seguintes passos: 1. Habilite o modo de debug da pgina a ser depurada, denindo o atributo Debug da diretiva @Page, como mostrado a seguir:
<%@ Page Language=VB debug=true %>

Ou no arquivo Web.Cong:
<configuration> <compilation debug=true/> </configuration>

2. Dentro do CLR Debugger, clique no menu File...Open File e selecione a pgina a ser depurada. 3. No menu Tools, clique em Debug Processes e selecione o processo Aspnet_ wp.exe (marque a opo Show system processes). 4. Clique em Attach e em seguida Close. 5. Insira os breakpoints nos pontos desejados da pgina, clicando na margem esquerda da janela do CLR Deugger. 6. Execute a pgina ASP.NET a ser depurada a partir do browser. Quando um breakpoint for atingido, o debugger ser chamado.

Figura 2.7 Tela da ferramenta de debug do Framework .NET.

55

ASP .NET Guia do Desenvolvedor

Cache

O cache uma tcnica utilizada para melhorar o desempenho de acesso a dados que so acessados com freqncia. O ASP.NET implementa o cache em diversos nveis. O cdigo compilado da pgina armazenado automaticamente em cache no servidor para melhorar o desempenho. Alm disso, o ASP.NET suporta trs tipos de cache de servidor: Cache de Sada, Cache de Fragmento e Cache de Dados. Note que h duas localizaes de cache de dados: do lado do cliente e do lado do servidor. O cache realizado do lado do cliente realizado pelo browser. O cache do lado do servidor gerenciado pelo servidor Web. Alm disso, o conceito de cache no deve ser confundido com o armazenamento em buffer. O buffer utilizado para armazenar uma sada temporariamente at que a execuo da pgina esteja concluda.

Cache de sada
O cache de sada armazena a pgina inteira no cache e utiliza-o em solicitaes futuras em vez de reprocessar a pgina solicitada. O cache de sada feito por meio da diretiva @OutputCache. O seguinte exemplo armazenar a pgina em cache por 30 segundos e, durante esse perodo, todas as solicitaes a essa pgina sero servidas pelo cache.
<%@ Page Language=VB %> <%@ OutputCache Duration=30 VaryByParam=none %> <html> <body bgcolor=#FFFFFF> <p>Esta pgina foi gerada s: <strong><%= Now() %></strong></p> </body> </html>

Alm disso, o parmetro VaryByParam da diretiva @OutputCache permite especicar para quais parmetros de querystring devem ser gerados no cache da pgina. Por exemplo, a diretiva a seguir indica ao ASP.NET para armazenar em cache verses diferentes da pgina com base no parmetro de querystring Nome:
<%@ OutputCache Duration=30 VaryByParam=Nome %>

Cache de fragmento
O cache de fragmento permite armazenar partes de uma pgina em cache, como, por exemplo, o cabealho e rodap da pgina. Para tal necessrio embutir o cdigo a ser colocado em cache em um User Control e congurar suas opes de cache com a diretiva @OutputCache.

56

Captulo 2 Fundamentos do ASP .NET

Cache de dados
O cache de dados pode ser utilizado para armazenar objetos que podem ser reutilizados nas pginas, melhorando o desempenho. Alm disso, ele tambm fornece uma maneira simples de manter informao entre as pginas, porm deve-se atentar que o cache global para a aplicao e a informao armazenada em cache estar visvel a todos os usurios. O cache pode ser acessado por meio da classe Cache, a qual fornece os mtodos necessrios para a manipulao dos objetos em cache. O exemplo a seguir ilustra a utilizao do cache de dados:
<%@ Page Language=VB %> <script runat=server> Sub Page_Load(Sender As Object, E As EventArgs) Dim strTimestamp As String Recupera objeto armazenado no cache strTimestamp = Cache.Get(ValorExemplo) Verifica se o objeto ainda existe If strTimestamp Is Nothing Then Associa um novo valor strTimestamp = Now() Insere no cache formas aceitveis: Insert(String, Object) Insert(String, Object, CacheDependency) Insert(String, Object, CacheDependency, DateTime, TimeSpan) Insert(String, Object, CacheDependency, DateTime, TimeSpan, _ CacheItemPriority, CacheItemRemovedCallback) Cache.Insert(ValorExemplo, strTimestamp, Nothing, _ DateTime.Now.AddMinutes(.5), TimeSpan.Zero) End If lblTimestamp.Text = strTimestamp End Sub </script> <html> <head> <title>Exemplo de Cache de Dados ASP.NET</title> </head> <body bgcolor=#FFFFFF> <p> Esta pgina foi gerada s: <strong><asp:label id=lblTimestamp runat=server /></strong> </p> </body> </html>

57

ASP .NET Guia do Desenvolvedor

Segurana

O ASP.NET trabalha em conjunto com o Internet Information Server (IIS) para dar suporte aos servios de autenticao, autorizao e personicao (Impersonation). Alm disso, o ASP.NET suporta segurana baseada em Roles. As classes de segurana do Framework .NET so encontradas nos namespaces System.Web. Security e System.Web.Principal. O ASP.NET oferece tambm recursos de criptograa, assinatura digital, hashing e autenticao de mensagens. O namespace System. Security.Cryptography fornece as classes que implementam esses mecanismos.

Autenticao
A autenticao a identicao do usurio que fez a solicitao, validando suas credenciais, que podem ser seu nome e sua senha. O ASP.NET suporta os seguintes tipos de autenticao: Forms Permite que aplicaes forneam sua prpria pgina de login e realizem a vericao de credenciais. O ASP.NET redireciona a solicitao no autenticada para essa pgina. A pgina submetida, a aplicao autentica a solicitao por meio do objeto FormsAuthentication (classe FormsAuthentication) e o sistema cria um cookie contendo as credenciais necessrias autenticao do usurio. As solicitaes subseqentes do browser automaticamente incluiro o cookie. A autenticao Forms implementada da seguinte forma: Habilitar o acesso annimo no IIS. Congurar a seo <authentication> e <authorization> no arquivo Web.Cong. O acesso dos usurios annimos no deve ser permitido:
<authentication mode=Forms> <forms name=.ASPXAUTH loginUrl=login.aspx protection=All timeout=30 path=/ /> </authentication> <authorization> <deny users=? /> </authorization> Atributo LoginUrl Name Path Protection Timeout Descrio Solicitaes no autenticadas sero redirecionadas para esta pgina. Nome do cookie de autenticao. Caminho do cookie de autenticao. Opes de proteo dos dados do cookie. Este pode ser All, None, Encryption, Validation. Tempo de expirao do cookie de autenticao em minutos.

58

Captulo 2 Fundamentos do ASP .NET


Criar pgina de login, onde o usurio ser validado, o cookie ser gerado e a solicitao do usurio ser redirecionada. Por exemplo, o seguinte cdigo de autenticao poderia ser usado na pgina de login:
If FormsAuthentication.Authenticate(txtUserName.Value,txtUserPass.value) Then FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, chkPersistCookie.Checked) Else Response.Redirect(logon.aspx, false) End If

O mtodo Authenticate do objeto FormsAuthentication retornar True se o nome do usurio e a senha combinarem com o usurio e a senha congurados no arquivo Web.Cong. Windows Na autenticao Windows o IIS realiza a autenticao comunicando-se diretamente com o sistema operacional para validar as credenciais do usurio. A autenticao repassada ao ASP.NET. A autenticao Windows requer o mnimo de codicao. O IIS utiliza trs tipos diferentes de autenticao:
Tipo Basic Descrio O nome do usurio e a senha so transmitidos em cada solicitao. O IIS mapeia o nome do usurio e a senha para um conta no servidor Web, produzindo um token de acesso que utilizado para vericar o acesso aos recursos por meio das listas de controle de acesso (ACL). Digest Semelhante autenticao Basic, porm a senha do usurio no transmitida como texto aberto. Requer browser que suporte autenticao Digest. Integrada (NTLM) O usurio no entra com seu nome e senha. Em vez disso, aps o browser entrar em contato com o servidor, as informaes criptografadas de nome do usurio e a senha que o usurio utilizou para se logar na estao so enviados para autentic-lo no servidor. Requer que o browser seja o Internet Explorer.

Exemplo de congurao de autenticao Windows:


<authentication mode= Windows /> <authorization> <deny users=? /> <allow users= * /> </authorization>

Os caracteres especiais tm o seguinte signicado:


Caractere * ? Descrio Representa todos os usurios ou todos os grupos. Signica acesso annimo. Para a autenticao do tipo Windows, ser interpretada como a conta de acesso annima (IUSR_NOME_DO_COMPUTADOR).

59

ASP .NET Guia do Desenvolvedor


Passport Autenticao baseada no servio Passport da Microsoft. Funciona de maneira semelhante autenticao Forms, porm toda a funcionalidade fornecida pelo Passport. Cria um cookie de autenticao que utilizado para autorizao. Pode ser utilizado quando se necessita de uma autenticao nica entre aplicaes ou sites. Mais informaes em www.passport.com. A autenticao Passport implementada da seguinte forma: 1. Instalar o Passport SDK. 2. Registrar-se no servio Passport Microsoft. 3. Congurar o arquivo Web.Cong:
<authentication mode=Passport> <passport redirectUrl=internal|url /> </authentication>

None A autenticao None (default) utilizada quando no h necessidade de implementar segurana para a aplicao. Oferece ganho de performance para a aplicao e permite implementar autenticao customizada. Congurao:
<authentication mode=None />

Autorizao
Autorizao o processo que verica se um usurio autenticado tem acesso a um determinado recurso. O ASP.NET oferece dois tipos de autorizao: FileAuthorization (autorizao no nvel de diretrio e arquivo), que realizada pela classe FileAuthorizationModule e ativada quando a autenticao do tipo Windows. A classe FileAuthorizationModule responsvel por autorizar o acesso do usurio baseado nas listas de controle de acesso (ACLs); UrlAuthorization (autorizao no nvel de URL), realizada pela classe UrlAuthorizationModule, a qual responsvel por autorizar o acesso baseado na Url da solicitao. Os elementos deny e allow no Web.Cong controlam quais usurios tm acesso a quais recursos. Exemplo de congurao de UrlAuthorization:
<authorization> <allow roles=Admins /> <allow roles=WebUsers /> <deny users=* /> </authorization>

60

Captulo 2 Fundamentos do ASP .NET

Personicao
A personicao (Impersonation) permite ao ASP.NET executar pginas com a identidade do usurio que fez a solicitao, ou seja, o ASP.NET restringir ou negar o aceso baseado nas permisses desse usurio. A personicao no mais implementada por default no ASP.NET, como nas verses anteriores do ASP.

Figura 2.8 Fluxo de segurana utilizando personificao.

61

ASP .NET Guia do Desenvolvedor


Os seguintes passos so executados no atendimento a uma solicitao do usurio: 1. Um usurio solicita uma pgina .aspx ao IIS. 2. As credenciais do usurio so passadas ao IIS. 3. O IIS autentica o usurio e repassa o token de autenticao ao ASP.NET. 4. Com base no token de autenticao e nas conguraes da aplicao (web. cong), o ASP.NET decide se deve personicar um usurio. Se a personicao estiver habilitada, o ASP.NET assume a identidade do usurio que fez a solicitao e as permisses NTFS so vericadas. Caso a personicao no esteja habilitada, o ASP.NET executa-a com a identidade do IIS. 5. Se o acesso for permitido, o ASP.NET retorna pgina solicitada por meio do IIS. Exemplo de congurao de personicao:
<identity impersonate = false|true />

ou (personica para um usurio determinado):


<idenity impersonate = true userName = username password = password />

Distribuio de uma aplicao ASP.NET

A distribuio de uma aplicao ASP.NET pode ser feita simplesmente por meio da cpia da estrutura de diretrios, contendo as pginas ASP.NET, os arquivos de congurao (Web.Cong), o arquivo Global.asax e componentes (assemblies), para o local de destino. No necessrio registrar um assembly, ou seja, nenhuma entrada no Registry do Windows deve ser criada. Para que um assembly esteja disponvel para a aplicao, deve ser copiado para o diretrio \bin na raiz da aplicao. Alm disso, possvel fazer a cpia de um assembly sobre um assembly existente em uma aplicao em execuo, mesmo que o prprio assembly esteja em uso. O Framework .NET possui um mecanismo que mantm uma cpia do assembly que est sendo utilizado, enquanto o assembly original no ca bloqueado para atualizaes. Se o assembly for atualizado, novas solicitaes faro uso do assembly atualizado, e as solicitaes em execuo ainda utilizaro a verso antiga do assembly, at que estas sejam concludas. O utilitrio GacUtil.exe, que acompanha o Framework .NET, pode ser utilizado para listar, adicionar ou remover assemblies do cache global de assembly.

62

Você também pode gostar