8/6/2019 Fundamentos Do ASP
1/46
17
2Fundamentos do ASP.NETASP.NET a nova verso da tecnologia Active Server Pages utilizada paradesenvolver pginas Web com contedo dinmico. Ao mesmo tempo em queASP.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 implementadasutilizando-se Visual Basic.NET, C# (l-se C Sharp) e JScript.NET. Os exemplosdeste livro esto em Visual Basic.NET.
Por meio do ASP.NET pode-se utilizar todos os recursos disponveis no Frame-work .NET, como o ambiente de runtime CLR, o tipo comum de dados e abiblioteca 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 podemser utilizados ou estendidos. Alm disso, possvel utilizar componentes desen-
volvidos utilizando a tecnologia COM/COM+, embora aspectos de desempenhodevam 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 WebServices, pode-se expor interfaces para acessar dados ou regras de negcio,
que podem ser manipulados por clientes ou outras aplicaes. Web Servicespermite a troca de dados em um cenrio cliente-cliente ou servidor-servidor,usando protocolos-padro como HTTP e XML para transportar dados.
8/6/2019 Fundamentos Do ASP
2/46
18
Por que uma nova verso ASP?A seguir, algumas razes que motivaram a implementao de uma nova versoASP.
Cdigo com estruturao confusa
No ASP possvel a utilizao de cdigos HTML, Script, componentes e outroselementos misturados na pgina, dificultando o desenvolvimento, a manutenoe a reutilizao de cdigo. O ASP.NET oferece o recurso chamado de Code Be-hind, que possibilita colocar a parte de design da pgina e a parte de cdigo emdois arquivos distintos. O design pode ser feito em paralelo com a programao.Por outro lado, tambm possvel colocar o cdigo dentro da prpria pgina dedesign, 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 dadosdo usurio. O ASP.NET introduz um modelo de componente, com controlesbaseados 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, inter-pretada e transformada em HTML, o qual enviado para o browser que solicitoua pgina. No ASP.NET as pginas so compiladas em um executvel (DLL), oque pode acarretar um ganho significativo de performance. Alm disso, pode-seutilizar qualquer linguagem que suporte o Framework .NET. O Visual Studio.NEToferece o VB.NET, C# e o C++ como opes de instalao. No ASP possvelutilizar 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 necessidadede considerar diferentes sadas para uma mesma aplicao, como, por exemploutilizando formato HTML, WML, XML e HDML. O ASP.NET oferece ummodelo de programao unificado para o desenvolvimento de aplicaes paraPCs e dispositivos mveis. Utilizando controles especiais e extenses do ASP.NET, pode-se desenvolver aplicaes que podero ser acessadas por meio dediferentes dispositivos. Para o desenvolvimento de aplicaes para dispositivosmveis, deve-se utilizar o Mobile Internet Toolkit, que pode ser baixado emhttp://www.msdn.microsoft.com/vstudio/device/mitdefault.asp.
Alm desses pontos, pode-se destacar a necessidade de ferramentas melhorespara depurao de cdigo e layout das pginas, recursos limitados de segurana,dificuldades na distribuio e configurao da aplicao, falta de suporte paraWeb Farm e cache do lado do servidor.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
3/46
8/6/2019 Fundamentos Do ASP
4/46
8/6/2019 Fundamentos Do ASP
5/46
21
Figura 2.1 Tela inicial do We Matrix.
Arquitetura do ASP.NET
Figura 2.2 Viso geral da arquitetura do ASP.NET.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
6/46
22
Nas verses anteriores do ASP, a pgina era interpretada sempre que requisitada(com exceo das pginas armazenadas no cache do servidor, que j foram inter-pretadas). No modelo ASP.NET, o cdigo compilado para MSIL, transformandoa pgina em um objeto, armazenando-o no cache do servidor e tornando-o dis-ponvel para ser executado. A pgina compilada quando criada ou alterada,porm a compilao s ocorre realmente quando a pgina solicitada. Mesmo quea 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 req-uisio 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 obrowser que solicitou a pgina.
A verso compilada em MSIL fica armazenada em uma DLL dentro deDrive:\WINNT\Microsoft.Net\Framework\v.1.x\Temporary ASP.NET files\.Pode-sevisualizar o contedo dessa DLL no MSIL Disassembler, digitando ILDASMna linha de comando, como mostrado na figura 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 modificado). Isso significa que pginas .asp e .aspx podemcoexistir em um mesmo ervidor e em uma mesma aplicao.
Figura 2.3 Visualizando informao do assembly com o ILDasm.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
7/46
23
Pginas ASP.NETUma pgina ASP.NET um arquivo texto com a extens .aspx, como no exemploa seguir:
Figura 2.4 Estrutura de uma pgina ASP.NET.
Essa pgina destaca os elementos mais comuns encontrados em uma pginaASP.NET:
Linha Descrio
1 Diretiva que especifica parmetros de compilao da
pgina.
2-8 Bloco de Declarao de Cdigo, onde podem ser colocadas a funcionalidade
da pgina e rotinas de tratamento de eventos.
14 Texto esttico.
15 Declarao de um formulrio Web, utilizando o controle de servidor
form.16 Bloco de Gerao de Cdigo, onde pode ser inserido cdigo ASP.NET no
meio de cdigo HTML.
18-24 Cdigo contendo os controles de servidor (HTML e Web).
Com a introduo de controles executados no servidor (Server Controls), aspginas ASP sofreram uma mudana na maneira de serem programadas. O novomodelo utiliza a programao orientada a eventos, dessa forma, os eventos queacontecem em um controle no cliente podem ser detectados pelo servidor e umaao pode ser tomada em resposta ao evento. Alm disso, no ASP.NET uma
pgina representada por uma instncia da classe Page, que automaticamentecriada toda vez que feita a requisio da pgina.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
8/46
24
Classe Page
Toda pgina ASP.NET solicitada compilada como um objeto da classe Page, ea instncia dessa classe armazenada no cache do servidor, mesmo que a pgina
contenha somente texto HTML. A classePage funciona como um container paratodos os controles que fazem parte da pgina solicitada, disponibilizando seusmtodos, propriedades e eventos, os quais podem ser acessados diretamente emuma pgina ASP.NET, como, por exemplo: Validate em vez de Page.Validate.
Namespace: System.Web.UI
Assembly: System.Web (System.Web.dll)
Construtor
New Page ()
Cria uma nova instncia da classe Page.
Propriedades pblicas
A classe Pagepossui as seguintes propriedades pblicas, alm das propriedadesherdadas da classe Control.
Application
Retorna uma referncia a um objeto do tipoApplication (HttpApplicationState).Public ReadOnly Property Application As HttpApplicationState
Cache
Retorna uma referncia a um objeto do tipo Cache. Uma instncia da classeCache criada para cada aplicao, e ela permanece disponvel durante todoo ciclo de vida desta. O Cachepode ser utilizado para armazenar valores entrerequisies de pginas, os quais sero visveis para todos os usurios. NoASP.NET, pode-se utilizar o cache do servidor tanto para armazenamentoda sada de uma pgina dinmica, por meio da diretiva @OutPutCache, comopara o armazenamento de valores especficos.
Public ReadOnly Property Cache As Cache
Exemplo:
Cache(txt1) = txtName.value
ClientTarget
Define ou retorna um valor que permite alterar a deteco automtica de browser. Pode ser utilizado para especificar os recursos suportados pelobrowser, os quais devem ser considerados para gerar a sada da pgina (porexemplo, se o browser suporta DHTML). O valor definido nessa propriedade
deve corresponder ao valor especificado na seo do arquivode configurao Web.Config. Ao definir um valor para essa propriedade, adeteco automtica de browser desabilitada.
Public Property ClientTarget As String
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
9/46
25
EnableViewState
Define ou retorna um valor indicando se a pgina (e todos os controlescontidos 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
Define ou retorna a pgina que deve ser carregada, caso seja detectado umerro (Exception) no tratado.Public Property ErrorPage As String
ID
Define ou retorna um identificador da instncia da classe Page da pginaem execuo.Overrides Public Property ID As String
IsPostBack
Indica se a pgina est sendo recarregada aps um round-trip (ida e voltaao servidor) ou se est sendo carregada pela primeira vez, permitindo o usodo evento Page_Load para definir valores iniciais para os controles.Public ReadOnly Property IsPostBack As Boolean
Valor Descrio
True Indica que a pgina foi carregada aps um round-trip.
False Indica que a pgina est sendo carregada pela primeira vez ou por meio
do boto Refresh .
Exemplo:
IsPostBack
Sub Page_Load(Src As Object, E As EventArgs)if not isPostBack then
response.write (Primeira execuo da pgina)end if
End Sub
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
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
10/46
26
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
Define ou retorna um valor indicando que o recurso Smart Navigation esthabilitado (True) ou no (False). Smart Navigation um recurso suportadopelo browser Internet Explorer 5 (ou superior), que oferece funcionalidadesde navegao, tais como: persistncia da posio da barra de rolagem entrepginas, persistncia do foco em elementos da pgina durante a navegao
e armazenamento do ltimo estado da pgina no histrico do browser. Orecurso Smart Navigation pode ser habilitado pelo atributo SmartNavigationda diretiva @Page.Public Property SmartNavigation As Boolean
Trace
Retorna uma referncia ao objetoTraceContext, que mostra detalhes de execuoda pgina, caso este tenha sido habilitado. A depurao (Tracing) pode serhabilitada por meio da diretiva @Page: .
Public ReadOnly Property Trace As TraceContext
User
Obtm informaes sobre o usurio que est fazendo a requisio da p-gina. Retorna um objeto do tipo IPrincipal (System.Security.Principal) que possuia propriedade Identity.Public ReadOnly Property User As IPrincipal
Identity expe as seguintes propriedades:
Propriedade Descrio
AuthenticationType Retorna o tipo de autenticao: None, Windows, Forms ou Pass-
port.
IsAuthenticated Retorna true se o usurio foi autenticado com sucesso, caso contrrio,
false.
Name Retorna o nome do usurio autenticado.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
11/46
27
Exemplo:
response.write (Usurio = & user.identity.name)response.write (Tipo de autenticao = & user.identity.AuthenticationType)if (user.identity.isAuthenticated) then
response.write (
Usurio autenticado.)else
response.write (Usurio no autenticado.)end if
Validators
Retorna uma coleo contendo todos os controles de validao da pgina.Public ReadOnly Property Validators As ValidatorCollection
Visible
Define ou retorna um valor indicando se o objeto Page ser renderizado, ouseja, se a pgina estar visvel (True = default) ou no (False).Overrides Public Property Visible As Boolean
Exemplo das propriedades da classe Page
Livro ASP.NET
Sub Page_Load(Src As Object, E As EventArgs)response.write
(
Propriedades da Classe Page)response.write (
Cache = & Convert.ToString(Page.Cache))response.write (
ClientTarget = &
Convert.ToString(Page.ClientTarget))response.write (
EnableViewState = &
Convert.ToString(Page.EnableViewState))response.write (
SmartNavigation = &
Convert.ToString(Page.SmartNavigation))response.write (
User = & Convert.ToString(Page.User))
End Sub
Propriedades protegidas
A classe Pagepossui a seguinte propriedade protegida, alm das propriedadesprotegidas herdadas da classe Control:
Context
Retorna o objeto HttpContext associado pgina.Overrides Protected ReadOnly Property Context As HttpContext
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
12/46
28
Mtodos pblicos
A classe Pagepossui os seguintes mtodos pblicos, alm dos mtodos pblicosherdados das classes Control e Object:
DesignerInitialize
Utilizado por ferramentas de desenvolvimento (RAD) para inicializar valoresda instncia da classe Page.
GetPostBackClientEvent
Retorna uma string que representa a funo script cliente que originou oenvio (postback) do formulrio.Public Function GetPostBackClientEvent( ByVal controle As Control, _
ByVal argumento As String) As String
Parmetro Descrio
controle Controle que recebe o envio (postback) do evento cliente.
argumento Argumento passado para o mtodo IPostBackEventHandler.RaisePostBackEv-ent.
GetPostBackClientHyperlink
Retorna o nome da funo do lado cliente e o ID do controle do servidorque processou a funo.Public Function GetPostBackClientHyperlink(ByVal controle As Control,
_ByVal argumento As String) As String
Parmetro Descrio
controle Controle do servidor que processar o envio (postback).
argumento Argumento passado para o controle do servidor.
GetPostBackEventReference
(Sobrecarregado)
Retorna uma referncia funo do lado cliente que pode ser inserida emum manipulador de evento cliente.
Prottipo 1:Overloads Public Function GetPostBackEventReference(_
ByVal controle As Control) As String
Parmetro Descrio
controle 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 Descrio
controle Controle do servidor que processar o envio (postback).
argumento Argumento passado para o controle do servidor.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
13/46
29
GetTypeHashCode
Retorna um cdigo, por meio de uma funo hash, gerado para objetosPage 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 pginaASP.NET. Para emitir blocos de script no rodap da pgina, deve-se utilizarblocos de script startup.Public Function IsClientScriptBlockRegistered( ByVal chave As String) As Boolean
Parmetro Descriochave Chave do script cliente.
IsStartupScriptRegistered
Retorna um valor indicando se o bloco de script startup cliente j estregistrado (True) ou no (False) em uma pgina. Utilizado antes da chamadado mtodo Page.RegisterClientScriptBlockpara evitar que o script seja registradonovamente. Blocos de script startup so emitidos no rodap da pginaASP.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 scriptfaz referncia necessariamente tero sido carregados antes de o script serexecutado. Para emitir blocos de script no topo da pgina, deve-se utilizarBlocos de script.Public Function IsStartupScriptRegistered( ByVal chave As String) As Boolean
Parmetro Descrio
chave 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 Descrio
virtualPath Especifica 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 serusado para que o elemento renderizado por um controle de servidor sejainserido em um array no script do lado cliente.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
14/46
30
Esse array permite tratar elementos do mesmo tipo de maneira uniforme,facilitando o acesso a estes. Por exemplo, os controles de validao utilizamum array chamado Page_Validators.
Public Sub RegisterArrayDeclaration(ByVal NomeArrayAs String, _
ByVal ValorArray As String)
Parmetro Descrio
nomeArray Nome do array no qual o valor ser declarado.
valorArray Valor a ser colocado no array.
RegisterClientScriptBlock
Insere blocos de script no cliente que podem ser utilizados pelos controlesde servidor.Overridable Public Sub RegisterClientScriptBlock(ByVal chave As String, _
ByVal scriptAs String)
Parmetro Descrio
chave Chave nica que identifica o bloco de script.
script Contedo do script que ser inserido no cliente.
Exemplo:
Sub Page_Load( sender as Object,e as EventArgs)Script que ser enviado para o clienteDim strScript as String = function SubOk() {strScript += alert(O boto foi clicado !!);}If(Not IsClientScriptBlockRegistered(Script1))
RegisterClientScriptBlock(Script1, strScript)End If
End Sub
RegisterHiddenField
Insere um campo oculto (hidden) em um formulrio. O campo ser enviadopara a pgina quando o controle HtmlForm for renderizado.Overridable Public Sub RegisterHiddenField(ByVal nomeCampoOculto As String, _
ByVal valorCampoOculto As String)
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
15/46
31
Parmetro Descrio
nomeCampoOculto Nome do campo oculto a ser criado.
valorCampoOculto O valor a ser associado propriedade value do campo oculto.
Exemplo:
Sub Page_Load(sender As Object, e As EventArgs)RegisterHiddenField(NomeCampoOculto, Valor do Campo)
End sub
RegisterOnSubmitStatement
Usado para acessar o evento cliente OnSubmit em uma pgina.Public Sub RegisterOnSubmitStatement(ByVal chave As String, _
ByVal scriptAs String)
Parmetro Descrio
chave Chave nica que identifica o bloco de script.
script Bloco de script que ser acionado no evento OnSubmit.
Exemplo:
Sub Page_Load(sender As Object, e As EventArgs)RegisterOnSubmitStatement(submit, document.write(O evento Submit foi disparado !!))End sub
RegisterRequiresPostBack
Registra um controle, exigindo o tratamento de envio para o servidor (post-back).Public Sub RegisterRequiresPostBack(ByVal controle As Control)
RegisterRequiresRaiseEvent
Registra um controle, exigindo que um evento seja disparado quando ocontrole for processado na pgina.Overridable Public Sub RegisterRequiresRaiseEvent( _
ByVal controle As IPostBackEventHandler)
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
16/46
32
RegisterStartupScript
Registra blocos de script startup em uma pgina, evitando que blocosduplicados de cdigo de script sejam enviados ao cliente.
Overridable Public Sub RegisterStartupScript(ByVal chave As String, _ByVal scriptAs String)
Parmetro Descrio
chave Chave nica que identifica o bloco de script.
script Contedo do bloco de script.
RegisterViewStateHandler
Utilizado para persistir o View State de uma pgina. Normalmente somenteo objeto HtmlForm chama esse mtodo.
Public Sub RegisterViewStateHandler()
Validate
Faz com que todos os controles de validao contidos em uma pgina executemsuas validaes. Esse mtodo executado pelos controles que possuem apropriedade CausesValidation com valor True.Overridable Public Sub Validate()
VerifyRenderingInServerForm
Utilizado para confirmar se um controle que requer um formulrio (HtmlForm)foi devidamente inserido nele. Se o controle no estiver entre as tags deformulrio, uma exceo ser gerada.Overridable Public Sub VerifyRenderingInServerForm(ByVal controle As Control)
Mtodos protegidos
A classe Pagepossui os seguintes mtodos protegidos, alm dos mtodos prote-gidos herdados das classes Control, TemplateControl e Object:
CreateHtmlTextWriter
Cria um objeto objpara renderizar o contedo da pgina.Overridable Protected Function CreateHtmlTextWriter(ByVal objAs 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 sersobreescrito para que o estado possa ser carregado com outra fonte que noseja um campo oculto.Overridable Protected Function LoadPageStateFromPersistenceMedium() As Object
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
17/46
33
RaisePostBackEvent
Notifica o controle que causou o envio de que ele deve atender a umevento.
Overridable Protected Sub RaisePostBackEvent(ByVal sourceControl As IPostBack-EventHandler, ByVal eventArgument As String)
SavePageStateToPersistenceMedium
Salva qualquer informao de View State da pgina por meio do objetoespecificado em viewState.Overridable Protected Sub SavePageStateToPersistenceMedium(ByVal viewState As
Object)
Eventos
A classe Pagepossui os seguintes eventos pblicos herdados das classes Template-Control e Control, listados pela ordem de execuo:
Init
Ocorre quando a pgina inicializada. o primeiro passo no ciclo de vidada pgina e qualquer informao de inicializao pode ser colocada nesseevento. Informao de View State no est disponvel nesse evento (poisainda no foi gerada), assim como o acesso a outros controles da pgina nodeve 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 verificar se a primeira vez que a pgina carregada (herdado daclasse Control).
DataBinding
Ocorre quando o mtodo DataBind chamado na pgina. O mtodo DataBindvincula uma fonte de dados ao controle (herdado da classe Control).
PreRender
Ocorre antes que qualquer sada seja enviada para o browser. Mudanas noestado do controle (View State) podem ser atualizadas durante esse evento(herdado da classe Control).
Unload
Ocorre toda vez que o processamento da pgina finalizado. Qualquer aofinal 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 classeControl).
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
18/46
8/6/2019 Fundamentos Do ASP
19/46
35
NomeEndereo
Sintaxe de controle de servidor Web
Utilizada para declarar Controles de Servidor Web.
Exemplo:
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:
Sintaxe de Data Binding:
O cdigo declarado dentro da tag executado somente quando o mtodoDataBind do container chamado.
Exemplo:
Sintaxe de objeto:
Utilizado para declarar e criar instncias de objetos.
Exemplo:
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
20/46
36
Sintaxe de comentrio:
Utilizada para comentar ou desabilitar o cdigo dentro dos blocos de gerao decdigo da pgina (tags ). O contedo dessa tag no processado. Para co-
mentar o cdigo dentro dos blocos de declarao de cdigo ()deve-se utilizar o estilo de comentrio da linguagem de programao que estiversendo empregada. Por exemplo, para o VB.NET, deve-se utilizar um caracterede aspas simples para comentar uma linha de cada vez.
Exemplo:
Sintaxe de Server-Side Include:
Permite a incluso de contedo contido em outro arquivo, em qualquer lugarna pgina ASP.NET. Por default, essa tag pode ser utilizada somente a partir dearquivos com as extenses .shtml, .shtm, .stm, .asp, .asa, .asax e .aspx. Pode-sealterar essas extenses por meio do Internet Services Manager.
Um arquivo pode ser includo por meio de seu caminho fsico ou virtual.
Parmetro Descrio
tipoCaminho O tipo do caminho do arquivo. Pode ser File ou Virtual.
file 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.
virtual Indica que o parmetro nomeArquivo um caminho virtual a partir do
diretrio virtual da aplicao.
nomeArquivo O nome do arquivo cujo contedo ser includo na pgina corrente. Deve
conter a extenso do arquivo e deve estar definido entre aspas ().Exemplo:
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
21/46
37
Principais diretivas de pginaAs diretivas de pgina definem 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:
As seguintes diretivas podem ser utilizadas:
@ Page
Define parmetros especficos de compilao e processamento para a pgina.Principais atributos:
Atributo Descrio
AspCompat 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 ren-
derizados.
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 Especifica a pgina de erro.
Explicit Obriga (true) ou no (false) a declarao de variveis (default = false).
Inherits Indica a classe utilizada pela pgina.
Language Especifica a linguagem utilizada na pgina nas tags .Src Especifica o arquivo contendo o cdigo-fonte.
Trace Habilita (true) ou desabilita (false) o rastreamento para a pgina (default =
false).
@ Control
Define parmetros especficos de compilao e processamento para o UserControl (.ascx).
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 Especifica 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 Explicitdo Visual Basic.
Inherits Define a classe de code-behind do User Control.
Language Especifica a linguagem utilizada na pgina.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
22/46
38
Atributo Descrio (cont.)
Strict Determina se a pgina ser compilada utilizando o comando Option Strict
do Visual Basic.
Src Especifica o nome do arquivo-fonte da classe code-behind do User Con-
trol.
WarningLevel Indica o nvel de advertncia do compilador (0 a 4).
@ Import
Importa um namespace para uma pgina. Caso a diretiva@Import seja utilizadano arquivo Global.asax, o namespace ser importado para toda a aplicao,e suas classes estaro disponveis para todas as pginas. O namespace im-portado pode ser parte do Framework .NET ou um namespace definido pelousurio. No preciso importar um namespace para utilizar seus objetos.
A importao apenas facilita o acesso ao objeto, porm se pode referenciaro objeto utilizando seu namespace completo, como, por exemplo: Dim obj asSystem.IO.File.
Exemplo:
Os seguintes namespaces so importados automaticamente para todas aspginas ASP.NET:
System System.Collections
System.Collections.Specialized
System.Configuration
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 espec-fica.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
23/46
39
@ Assembly
Vincula um assembly pgina corrente durante a compilao, tornandotodas as classes do assembly disponveis para serem utilizadas na pgina.
Caso a diretiva seja utilizada em um arquivo Global.asax, as classes estarodisponveis 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 fica disponvel para toda a aplicao, permitindovnculo tardio (late binding).
Atributo Descrio
Name Uma string que representa o nome do assembly a ser vinculado na pgina.
A extenso do arquivo no deve ser includa.
Src 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 daaplicao, so automaticamente importados para a aplicao. Para impedirque isso acontea, deve-se retirar a seguinte linha do arquivo Web.config:
O arquivo Web.config tambm pode ser utilizado para importar um assemblypara uma aplicao.
Exemplo:
@ OutputCache
Define a poltica de cache para a pgina ou User Control, permitindo o arma-
zenamento da sada da pgina ou User Control no cache do servidor, ou seja,a sada gravada em disco rgido na localizao especificada em Location. Ocache de sada pode ser utilizado para se obter ganhos de performance empginas muito acessadas.
Atributo Descrio
Duration Tempo (em segundos) em que a pgina armazenada no cache.
Location Especifica o local de armazenamento da sada (Any, Client, Downstream,
None, Server).
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
24/46
8/6/2019 Fundamentos Do ASP
25/46
41
Exemplo de Code Behind:
Primeiro deve ser criado o arquivo com o Code Behind (MeuFonteCodeBe-hind.vb):
Option Strict OffImports SystemImports System.Web.UIImports System.Web.UI.WebControlsImports System.Web.UI.HtmlControls
Public Class MeuCodeBehind: Inherits PagePublic Nome As TextBoxPublic spnSpan1 As HtmlGenericControlPublic Sub SubmitBtn_Click(Sender As Object, E As EventArgs)
spnSpan1.InnerHtml = Ol, & Nome.Text & .End SubEnd Class
E em seguida, pode-se utilizar o cdigo em uma pgina ASP.NET, como aseguir:
Nome:
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
26/46
42
Aplicao ASP.NETUma aplicao ASP.NET o conjunto de todos os arquivos, pginas, handlers,mdulos e cdigos executveis que podem ser acessados por meio de um di-
retrio virtual e seus subdiretrios em um servidor Web. Aplicaes ASP.NETso entidades totalmente separadas, ou seja, cada aplicao tratada dentro deum domnio de aplicao do CLR (runtime). Isso significa que cada aplicaopode manter suas prprias caractersticas de processamento e configuraes, pormeio dos arquivos Global.asax e Web.Config.
Cache de AssemblyUma aplicao ASP.NET utiliza o diretrio \bin chamado de Cache de Assem-bly, para armazenar os arquivos compilados (DLLs) utilizados. Cada aplicao
tem seu prprio diretrio, ou pode herdar um de seu diretrio-pai. Os assembliescolocados nesse diretrio ficam automaticamente disponveis para a aplicao.
O arquivo Global.asax um arquivo opcional com a finalidade de armazenar informaes ou objetosque sero utilizados globalmente pela aplicao. O Global.asax deve residir nodiretrio 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 smesmas regras de compilao e execuo de um arquivo .aspx. Quando compi-lado, 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 parapginas com extenso .asp e vice-versa.
Por segurana, o arquivo Global.asax no pode ser executado a partir dobrowser.
Partes do arquivo Global.asax
Um arquivo Globa.asax pode ser composto dos seguintes elementos: Diretivas de aplicao: especifica parmetros opcionais de compilao e
execuo das pginas ASP.NET.
Blocos de cdigo: define os mtodos e propriedades que faro parte da classeHttpApplication, que gerada como resultado da compilao do arquivo Global.asax.
Declaraes : declarao e criao de objetos.
Diretivas Server-Side: inclui o contedo de um arquivo especificado no
arquivo Global.asax.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
27/46
43
Diretivas de aplicao
Trs tipos de diretivas podem ser utilizadas:Application,Import eAssembly.
@Application
Define atributos especficos da aplicao utilizados pelo compilador.
Sintaxe:
Atributo Descrio
Description Descrio em formato-texto da aplicao. Esse valor ignorado pelo parser
e compilador do ASP.NET.
Inherits Nome da classe a ser derivada. Por padro, o arquivo Global.asax
compilado como uma classe derivada de HttpApplication, porm pos-
svel especificar, por meio desse atributo, uma outra classe, desde queela tambm seja derivada da classe HttpApplication.
Exemplo:
@Import
Ver descrio dessa diretiva na pgina 38.
@Assembly
Ver descrio dessa diretiva na pgina 39.
Blocos de cdigo
Blocos de cdigo permitem a definio de variveis, mtodos e eventos que faroparte da classe HttpApplication, resultado da compilao do arquivo Global.asax.
Sintaxe:
Cdigo
Atributo Descrio
runat Especifica que o cdigo ser executado no servidor.
language A linguagem utilizada no bloco de cdigo corrente. Se no for especificada,
a linguagem default ser utilizada (definida no arquivo de configurao da
aplicao).
src O nome do arquivo contendo o cdigo. Quando utilizado, qualquer cdigo
dentro do bloco ignorado.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
28/46
44
Declaraes
A tag pode ser utilizada para declarar e criar objetos de aplicaoe sesso. A tag pode ser utilizada de trs diferentes formas, dependendo do
tipo do objeto a ser criado:
Atributo Descrio
id Identificador nico dentro da pgina para o objeto a ser criado e usado
para referenciar o objeto no cdigo.
runat Especifica 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 Identificador 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 erroquando declarados dentro de uma mesma tag .
Exemplo:
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 serdeclarados 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.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
29/46
45
Session_End
Ocorre quando a sesso de usurio encerrada por timeout de sesso (de-fault=20 minutos) ou pela execuo do mtodoAbandon (Session.Abandon).
Application_AcquireRequestState
Ocorre quando o ASP.NET obtm o estado corrente associado solicitaocorrente.
Application_AuthenticateRequest
Ocorre quando a identidade do usurio estabelecida. Pode ser usado paraexecutar qualquer cdigo antes que o usurio seja autenticado.
Application_AuthorizeRequest
Ocorre quando a autorizao do usurio verificada. Pode ser utilizado paraexecutar 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 seuprocessamento. o primeiro evento disponvel aps o handler concluir seutrabalho.
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.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
30/46
46
Application_ResolveRequestCache
Ocorre quando o ASP.NET completa um evento de autorizao deixandoos 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 finalidadede deixar que mdulos de cache armazenem respostas que sero utilizadaspara solicitaes subseqentes a partir do cache.
Exemplo:
O seguinte exemplo ilustra como utilizar o evento Error para gravar informaode erro no Log de eventos do NT:
Dim NomeLog As String = LogTesteAplicacaoSub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Cria eventoIf (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 eventosDim Log As New EventLog()Log.Source = NomeLogLog.WriteEntry(strMensagem, EventLogEntryType.Error)
End Sub
Diretivas Server-Side Include
Como em uma pgina ASP.NET comum, a incluso de contedo contido emoutro arquivo permitida no arquivo Global.asax e realizada por meio datag Include. Para mais detalhes sobre a sintaxe veja a pgina 36.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
31/46
47
Arquivo Web.ConfigO arquivo Web.Config um arquivo-texto em formato XML utilizado paraarmazenar informaes de configurao do servidor Web, tais como habilitar o
estado de sesso (session state), session timeout, buffering, linguagens default,ou mesmo armazenar outras informaes de configurao personalizadas, cujospares de chaves/valores podem ser criados e inseridos no arquivo. No ASP 3.0essas configuraes eram feitas por meio do Internet Information Server (IIS), oque dificultava o acesso programtico a estas. No ASP.NET possvel copiar aconfigurao do servidor Web com seu cdigo e contedo, como tambm alteraressas configuraes via FTP.
Da mesma maneira que o arquivo Global.asax, o Web.Config no um arquivoexigido para que a aplicao funcione. Caso ele no seja encontrado na hierarquia
de diretrios da aplicao, ser utilizado um arquivo chamado Machine.Config(WINNT\Microsoft.NET\Framework\verso\CONFIG\Machine.config), comconfiguraes predefinidas que servem para todo o servidor Web. Pode-se criarvrios arquivos de configurao (todos chamados Web.config), os quais podemser colocados em diferentes diretrios da aplicao, e suas configuraes teroefeito sobre o diretrio corrente e seus respectivos subdiretrios. Arquivos deconfiguraes em diretrios-filho herdam configuraes definidas em diretrios- pai, e tambm podem alterar ou sobrepor essas configuraes. Esse sistemahierrquico de herana de configuraes baseado no caminho do diretrio
virtual, e no no caminho fsico.Da mesma maneira que o arquivo Global.asax, por segurana, o arquivo Web.Config no pode ser acessado via browser.
Estrutura do arquivo Web.Config
O arquivo Web.Config segue regras de sintaxe XML. Toda informao de configu-rao deve ficar entre as tags e ,que so agrupadasem duas reas principais: seo de declarao do handler e seode definio de configurao do handler. Um handler uma classe
.NET que implementa a interface IConfigurationSectionHandler.
< handler_1>
configurao do handler_1< handler_2>
configurao do handler_2
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
32/46
48
Configuraes-padro do ASP.NETO ASP.NET possui os seguintes handlers-padro que podem ser utilizados paradefinir as configuraes no arquivo Web.Config:
Seo Descrio
Configura mdulos de HTTP dentro de uma aplicao, os quais par-
ticipam no processamento de cada solicitao. Utilizaes comuns
incluem segurana e conexo.
Mapeia URLs de entrada em classes IHttpHandler. Os subdiretrios noherdam essas configuraes. Responsvel tambm pelo mapeamento
de URLs de entrada em classes IHttpHandlerFactory. Os dados repre-sentados nas sees so hierarquicamente
herdados por subdiretrios.
Configura o estado de sesso.
Define as configuraes de globalizao de uma aplicao. Define as configuraes de compilao de uma aplicao.
Configura o rastreamento de uma aplicao.
Configura o modelo de processamento do ASP.NET no servidor
Web.
Define as configuraes do componente de capacidades do brows-
er.
Exemplo de arquivo Web.Config:
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
33/46
49
Acessando informaes de configurao nas pgi-
nasPode-se acessar as configuraes definidas no arquivo Web.Config, a partir de
uma pgina, por meio dos objetos intrnsecos ASP.NET. A seguinte linha decdigo d acesso ao atributo cookieless da seo :
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) &
)
Configuraes de aplicao armazenadas na seo podem seracessadas da seguinte forma:
Dim dsn As String = ConfigurationSettings.AppSettings(dsn)
Gerenciamento de estado da aplicaoPginas ASP.NET so baseadas no protocolo HTTP, e dessa forma no persisteo estado entre solicitaes (stateless). Para resolver esse problema, o ASP.NEToferece as seguintes alternativas:
Gerenciamento de estado no lado Cliente
Nenhuma informao de estado mantida no servidor entre as solicitaes. A
informao fica armazenada na pgina ou no computador-cliente.
Cookies
Arquivo-texto armazenado no computador do usurio que pode conter at 4.096bytes. O cookie um dos mtodos utilizados pelo ASP.NET para identificar asesso do usurio. Para trabalhar com cookies, necessrio utilizar a classeHttpCookie para armazen-los, e as classes HttpResponse e HttpRequestpara envi-lose receb-los, respectivamente.
Exemplo:
L o cookie armazenado no clienteIf Request.Cookies(UserName) = Null Then
Dim cookie As New HttpCookie(NomeUsuario)cookie.Values.Add(NomeUsuario, Isabela)...Envia o cookie para o clienteResponse.AppendCookie(cookie)
End If
Campos ocultos (Hidden)
Campos ocultos no ficam visveis na pgina e podem ser utilizados para ar-mazenar informaes especficas da pgina. O contedo de um campo oculto enviado na coleo Form. O ASP.NET possui o controleHtmlInputHiddenque oferecefuncionalidade para campos ocultos.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
34/46
50
View State
Recurso utilizado pelo ASP.NET para descrever o estado de um controle de ser-vidor 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 oenvio e retorno de uma pgina (postback). O ASP.NET automaticamente moni-tora o View State. Isso significa que se voc preencher um formulrio HTMLe clicar em submit, os valores ainda estaro na pgina quando esta voltar doprocessamento no servidor.
O ASP.NET implementa o View State incorporando campos HTML ocultos napgina sempre que um controle de servidor for utilizado (runat=server). Almdisso, pode-se armazenar valores no View State por meio do objeto StateBag, daseguinte maneira:
ViewState(Nome da varivel) = valor
O StateBag descartado assim que o usurio deixa a pgina. Os valores somantidos 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. Paramais 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 objetosintrnsecosApplication (HttpApplicationState) e Session (HttpSessionState). Alm disso, pode-se fazer o gerenciamento de estado da aplicao utilizando o banco dedados. O armazenamento de estado em um banco de dados especialmente tilpara a manuteno do estado em um perodo de tempo maior ou quando o estadodeve ser persistido mesmo que o servidor Web tenha que ser reinicializado. Oarmazenamento em banco normalmente utilizado em conjunto com cookies.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
35/46
51
Depurando pginas ASP.NETO suporte para depurao e tratamento de erros, chamados de excees, foisignificativamente melhorado no ASP.NET. Pode-se utilizar ferramentas de
depurao e rastreamento, como o CLR Debugger e o Trace. O rastreamento acoleta de informaes sobre a pgina baseado nas solicitaes feitas para esta. Ja depurao refere-se execuo passo-a-passo do cdigo, com a possibilidadeda definio de breakpoints e visualizao do contedo de variveis.
Alm disso, pode-se definir pginas de erro personalizadas, como tambm utilizara estrutura de tratamento de excees Try e Catch.
Try e CatchAs 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 per-sonalizados, da mesma maneira que o comando err.raise era utilizado no VisualBasic 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 aquiTry objCmd.Connection.OpenCatch objEx as OleDbException Trata exceo de OleDbCatch objEx as Exception
Trata exceo genricaEnd Try
As excees so agrupadas hierarquicamente. A classe Exception (System) aclasse-base para todas as excees. Todas as excees so mapeadas em classes.NET.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
36/46
52
Pgina de erro personalizadaPara especificar uma pgina de erro-padro para uma aplicao ASP.NET, necessrio incluir a seguinte linha no arquivo Web.Config no diretrio raiz da
aplicao:
O atributo mode especifica quando a pgina de erro personalizada ser exi-bida:
Valor Descrio
On A pgina de erro ser exibida quando ocorrer um erro.Off A pgina de erro no ser exibida (default).
Remoteonly 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 definir tambm pginas diferentes para cada erro, como a seguir:
Alm disso, possvel especificar pginas de erro individuais para cada pgina,utilizando o atributo ErrorPage da diretiva @Page no incio da pgina:
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
37/46
53
TraceO trace um recurso do ASP.NET para coleta de informaes sobre a execuoda pgina, como tempos de execuo, objetos utilizados, cabealhos HTTP e
variveis do servidor. Essas informaes podem ser exibidas na prpria pgina ouem uma pgina separada. Pode-se tambm inserir comandos de trace nas pginas,da mesma maneira que oResponse.writeera utilizado nas verses anteriores. Porm,com o trace, no necessrio remover manualmente essas informaes para queelas no fiquem visveis para o usurio, basta simplesmente desabilitar o trace.
O objeto Trace (classe TraceContext) oferece mtodos e propriedades para o ras-treamento de execuo de cdigo. Pode-se utiliz-lo da seguinte forma em umapgina ASP.NET:
Trace.Write (categoria, mensagem) ou
Trace.Warn (categoria, mensagem)
Parmetro Descrio
categoria (String) Utilizada para agrupar ou identificar informaes de rastreamen-
to.
mensagem (String)Mensagem a ser exibida.
As mensagem gravadas com Trace.Warn aparecero em vermelho na pgina detrace.
Rastreamento no nvel de pgina
O rastreamento no nvel de pgina pode ser ativado por meio do atributo Traceda diretiva @Page:
O rastreamento no nvel de pgina sobrepe a configurao de rastreamentodefinida no arquivo Web.Config.
Quando a pgina executada, uma tabela adicionada ao rodap dela contendoinformaes de rastreamento da pgina, como: Id da sesso, hora em que asolicitao 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.axdquando o rastreamento no nvel de aplicao est habilitado.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
38/46
54
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.Config no diretrio raiz
da aplicao:
Atributo Descrio
Enabled Habilita (true) ou desabilita (false)o rastreamento (default=False).
PageOutput
True 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 definidas
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.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
39/46
55
DebugO Framework .NET oferece a ferramenta de debug CLR Debugger (\Micro-soft.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 variveise expresses.
Para utilizar o CLR Debugger, deve-se seguir os seguintes passos:
1. Habilite o modo de debug da pgina a ser depurada, definindo o atributoDebug da diretiva @Page, como mostrado a seguir:
Ou no arquivo Web.Config:
2. Dentro do CLR Debugger, clique no menu File...Open File e selecione apgina 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 margemesquerda da janela do CLR Deugger.
6. Execute a pgina ASP.NET a ser depurada a partir do browser. Quando umbreakpoint for atingido, o debugger ser chamado.
Figura 2.7 Tela da ferramenta de debug do Framework .NET.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
40/46
8/6/2019 Fundamentos Do ASP
41/46
8/6/2019 Fundamentos Do ASP
42/46
58
SeguranaO ASP.NET trabalha em conjunto com o Internet Information Server (IIS) paradar suporte aos servios de autenticao, autorizao e personificao (Imperson-
ation). Alm disso, o ASP.NET suporta segurana baseada em Roles. As classesde segurana do Framework .NET so encontradas nos namespaces System.Web.Security e System.Web.Principal. O ASP.NET oferece tambm recursos de criptografia,assinatura digital, hashing e autenticao de mensagens. O namespace System.Security.Cryptography fornece as classes que implementam esses mecanismos.
AutenticaoA autenticao a identificao do usurio que fez a solicitao, validandosuas 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 veri-ficao de credenciais. O ASP.NET redireciona a solicitao no autenticada paraessa pgina. A pgina submetida, a aplicao autentica a solicitao por meiodo objeto FormsAuthentication (classe FormsAuthentication) e o sistema cria um cookiecontendo as credenciais necessrias autenticao do usurio. As solicitaessubseqentes do browser automaticamente incluiro o cookie.
A autenticao Forms implementada da seguinte forma: Habilitar o acesso annimo no IIS.
Configurar a seo e no arquivo Web.Config.O acesso dos usurios annimos no deve ser permitido:
Atributo Descrio
LoginUrl Solicitaes no autenticadas sero redirecionadas para esta pgina.
Name Nome do cookie de autenticao.
Path Caminho do cookie de autenticao.
Protection Opes de proteo dos dados do cookie. Este pode ser All, None, Encryp-
tion, Validation.Timeout Tempo de expirao do cookie de autenticao em minutos.
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
43/46
59
Captulo 2 Fundamentos do ASP.NET
Criar pgina de login, onde o usurio ser validado, o cookie ser gerado ea solicitao do usurio ser redirecionada. Por exemplo, o seguinte cdigode autenticao poderia ser usado na pgina de login:
If FormsAuthentication.Authenticate(txtUserName.Value,txtUserPass.value) ThenFormsAuthentication.RedirectFromLoginPage(txtUserName.Value, chkPersistCookie.Checked)Else
Response.Redirect(logon.aspx, false)End If
O mtodoAuthenticate do objeto FormsAuthentication retornar True se o nomedo usurio e a senha combinarem com o usurio e a senha configurados noarquivo Web.Config.
Windows
Na autenticao Windows o IIS realiza a autenticao comunicando-se dire-tamente com o sistema operacional para validar as credenciais do usurio. Aautenticao repassada ao ASP.NET. A autenticao Windows requer o mnimode codificao.
O IIS utiliza trs tipos diferentes de autenticao:
Tipo Descrio
Basic 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 verificar o acesso aosrecursos 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 configurao de autenticao Windows:
Os caracteres especiais tm o seguinte significado:
Caractere Descrio
* Representa todos os usurios ou todos os grupos.
? Significa acesso annimo. Para a autenticao do tipo Windows, ser
interpretada como a conta de acesso annima (IUSR_NOME_DO_COM-PUTADOR).
8/6/2019 Fundamentos Do ASP
44/46
60
Passport
Autenticao baseada no servio Passport da Microsoft. Funciona de maneirasemelhante autenticao Forms, porm toda a funcionalidade fornecida pelo
Passport. Cria um cookie de autenticao que utilizado para autorizao. Podeser utilizado quando se necessita de uma autenticao nica entre aplicaes ousites. 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. Configurar o arquivo Web.Config:
None
A autenticao None (default) utilizada quando no h necessidade de imple-mentar segurana para a aplicao. Oferece ganho de performance para a aplicaoe permite implementar autenticao customizada.
Configurao:
AutorizaoAutorizao o processo que verifica se um usurio autenticado tem acesso aum determinado recurso. O ASP.NET oferece dois tipos de autorizao:FileAutho-rization(autorizao no nvel de diretrio e arquivo), que realizada pela classeFileAuthorizationModule e ativada quando a autenticao do tipoWindows. A classeFileAuthorizationModule responsvel por autorizar o acesso do usurio baseado naslistas 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.Configcontrolam quais usurios tm acesso a quais recursos.
Exemplo de configurao de UrlAuthorization:
ASP.NET Guia do Desenvolvedor
8/6/2019 Fundamentos Do ASP
45/46
61
PersonificaoA personificao (Impersonation) permite ao ASP.NET executar pginas com aidentidade do usurio que fez a solicitao, ou seja, o ASP.NET restringir ou
negar o aceso baseado nas permisses desse usurio. A personificao no maisimplementada por default no ASP.NET, como nas verses anteriores do ASP.
Figura 2.8 Fluxo de segurana utilizando personificao.
Captulo 2 Fundamentos do ASP.NET
8/6/2019 Fundamentos Do ASP
46/46
Top Related