Resumo de vários problemas na atualização do ASP.NET 1.0 para o ASP.NET 2.0
Autor:Eve Cole
Data da Última Atualização:2009-06-30 16:06:42
Atualizei o projeto 1.1 original nos últimos dias e encontrei alguns problemas. Vou resumi-los aqui e lembrar aos amigos que não tiveram tempo de atualizar ou estão prontos para atualizar para evitar desvios e perda de tempo durante o processo de atualização.
1. A forma de processamento do arquivo Global.asax é diferente e ocorrerão erros após a conversão. No vs2003, Global.asax possui um arquivo de código posterior. Em 2.0, o arquivo de separação de código é movido para o diretório App_Code para que possa se tornar automaticamente. disponível através do aplicativo. Acesse qualquer página ASP.NET do programa. O atributo "Code-behind" será removido das diretivas em arquivos ASAX. vs2005 escreve o código diretamente em Global.asax. Portanto, você precisa excluir os arquivos convertidos, adicioná-los novamente e copiar o código correspondente.
Não há arquivo de projeto em 2.2.0. Em um aplicativo 1.1, o arquivo do projeto contém configurações de compilação, referências a assemblies externos e uma lista de arquivos no projeto. Em aplicativos 2.0, as configurações de versão e as listas de arquivos não são mais necessárias porque todos os arquivos no diretório do projeto Web são considerados parte do projeto Web.
3. Modo de separação de código.
No ASP.NET 1.1, o modo de separação de código separa o conteúdo (como test.aspx) do código (como test.aspx.cs). As páginas de conteúdo herdam de páginas separadas por código, que contêm código gerado pelo usuário e pelo designer.
O ASP.NET 2.0 aprimora o modo de separação de código por meio do uso de classes parciais, usando a palavra-chave parcial para separar o código de uma única classe em dois arquivos separados. Ele permite que uma classe abranja vários arquivos. No novo modo separado por código, a página de conteúdo herda da classe compilada, que consiste na página separada por código correspondente e no arquivo stub gerado automaticamente que define as declarações de campo para os controles usados na página de conteúdo. Essa alteração separa o código gerado automaticamente do código do usuário e torna a página de separação de código significativamente menor e mais limpa. A estrutura parcial da classe também reduz o risco de quebra acidental da página ao editar o código gerado pelo designer.
Se ocorrer um erro, verifique se existe uma palavra-chave parcial, caso contrário, adicione a palavra-chave parcial.
4. Verificação gramatical. O programa asp.net1.1 não verificará os erros de sintaxe em aspx, aspcx e outros arquivos durante a compilação, enquanto o vs2005 verificará a sintaxe em todos os aspx, aspcx e outros arquivos do projeto durante a compilação, portanto, se houver erros de sintaxe, isso fará com que a compilação não seja aprovada.
5. Declaração de controle. Se todos os controles forem declarados na página .aspx, exclua todas as declarações de controle do arquivo de separação de código, caso contrário, um erro será relatado: Definição duplicada.
6. (Somente C#) Mova o código de conexão de eventos da função InitialzeComponent no arquivo de divisão de código para a página .aspx. Observe que esta ação não se aplica a eventos chamados automaticamente, incluindo Page_Init, Page_Load, Page_DataBind, Page_PreRender, Page_Unload, Page_Error, Page_AbortTransaction e Page_CommitTransaction.
7. Método de implantação (site pré-compilado, totalmente compilado, atualizável, etc.). Na versão 1.x, os aplicativos Web eram pré-compilados e implantados como um grande assembly. As páginas de conteúdo (*.aspx) não são compiladas no servidor, mas podem ser editadas no servidor. Com o novo modo de compilação de páginas e estrutura de diretórios, você pode usar diversas configurações diferentes para implantar aplicativos ASP.NET 2.0. Em um caso, você pode pré-compilar todas as páginas ASPX e implantar um aplicativo Web que consiste em assemblies totalmente compilados. Neste modo, você não pode alterar facilmente o aplicativo no servidor. Como alternativa, você pode implantar seu aplicativo sem pré-compilar nenhum código. Nesta configuração, você pode alterar páginas .aspx, arquivos separados por código ou qualquer outro código da aplicação diretamente no servidor. Quando um usuário solicita uma página no servidor, a página é compilada dinamicamente.
8. Altere todas as propriedades CodeBehind na página .aspx para propriedades CodeFile
CodeBehind: especifica o nome do arquivo compilado que contém as classes associadas à página. Esta propriedade não pode ser usada em tempo de execução.
Essa propriedade é fornecida para compatibilidade com versões anteriores do ASP.NET para implementar a funcionalidade code-behind. No ASP.NET versão 2.0, você deve usar a propriedade CodeFile para especificar o nome do arquivo de origem e a propriedade Inherits para especificar o nome totalmente qualificado da classe.
Arquivo de código
Especifica o caminho para o arquivo code-behind referenciado pela página. Esta propriedade é usada com a propriedade Inherits para associar um arquivo de origem code-behind a uma página da web. Esta propriedade só é válida para páginas compiladas.
9. Mova todos os arquivos de código independentes e AssemblyInfo.cs para o diretório App_Code.
No entanto, após executar o assistente de conversão, você poderá descobrir que alguns arquivos de separação de código (por exemplo, *.aspx.cs ou *.ascx.vb) foram movidos para o diretório App_Code. Isso indica que a página de conteúdo do arquivo de divisão de código contém uma diretiva Codebehind malformada e não está configurada corretamente. Ou seja, o assistente de conversão não pode determinar se o arquivo de divisão de código está realmente vinculado a uma página .aspx específica.
10. Serviços Web No ASP.NET 1.x, os serviços Web (.asmx) são automaticamente divididos em uma página de cabeçalho em branco (.asmx) e um arquivo separado por código contendo os métodos reais.
Em Asp.net2.0:
• Mova a classe de separação de código para o diretório App_Code para que ela fique automaticamente acessível a partir de qualquer página ASP.NET no aplicativo.
• Altere a propriedade CodeBehind no arquivo .asmx para apontar para o novo local.
(Observe que os arquivos separados por código não usam classes locais, portanto o atributo CodeBehind continua a ser usado.)
• Altere todas as declarações de escopo Padrão, Amigo e Interno para Públicas.
Que tipo de problemas você encontrou durante o processo de atualização de 1.1 para 2.0? Você pode anotar para que todos possam aprender juntos e evitar desvios.