Pasta de código compartilhada no site asp.net
Se o seu aplicativo da web incluir código que você deseja compartilhar entre várias páginas, você poderá salvar o código em um arquivo em duas pastas especiais (pasta Bin e pasta App_Code) no diretório raiz do aplicativo da web Clamped. Quando você cria essas pastas e armazena tipos específicos de arquivos nelas, o ASP.NET trata esses arquivos de uma maneira especial.
Pasta Bin Você pode armazenar assemblies compilados na pasta Bin, e outros códigos (como código de página) em qualquer lugar do aplicativo Web referenciam automaticamente a pasta. Um exemplo típico é o código compilado para uma classe personalizada. Você pode copiar o assembly compilado na pasta Bin do seu aplicativo Web para que todas as páginas possam usar essa classe.
Os assemblies na pasta Bin não precisam ser registrados. Contanto que o arquivo .dll exista na pasta Bin, o ASP.NET o reconhecerá. Se você alterar o arquivo .dll e gravar uma nova versão dele na pasta Bin, o ASP.NET detectará a atualização e usará a nova versão do arquivo .dll para solicitações subsequentes de novas páginas.
Segurança da pasta Bin Colocar assemblies compilados na pasta Bin representa um risco de segurança. Se você mesmo escreveu e compilou o código, sabe o que ele faz. No entanto, você deve tratar o código compilado na pasta Bin como qualquer código executável. Seja cauteloso com o código compilado até testá-lo e ter certeza de que compreende sua funcionalidade.
Observe os seguintes aspectos de segurança relacionados à colocação ou não do código compilado na pasta Bin:
Os assemblies na pasta Bin têm como escopo o aplicativo atual. Portanto, eles não podem acessar recursos fora do aplicativo Web atual ou chamar código fora do aplicativo Web atual.
Em tempo de execução, o nível de acesso de um assembly é determinado pelo nível de confiança especificado no computador local. Para obter mais informações, consulte Níveis de confiança e arquivos de políticas do ASP.NET.
Se você estiver usando um designer como o Visual Studio, o código na pasta Bin será executado em um contexto diferente de quando foi executado. Por exemplo, o código pode ser executado com confiança total.
Pasta App_Code Você pode armazenar o código-fonte na pasta App_Code, que será compilado automaticamente em tempo de execução. Qualquer outro código na aplicação web pode acessar o assembly resultante. Portanto, a pasta App_Code funciona de forma semelhante à pasta Bin, exceto que você pode armazenar o código-fonte nela em vez do código compilado. A pasta App_Code e seu lugar especial em aplicativos Web ASP.NET permitem criar classes personalizadas e outros arquivos somente de código-fonte e usá-los em seu aplicativo Web sem precisar compilá-los separadamente.
A pasta App_Code pode conter arquivos de código-fonte escritos na forma de arquivos de classe tradicionais (ou seja, arquivos com extensões .vb, .cs, etc.). No entanto, também pode conter arquivos que não parecem explicitamente escritos em uma linguagem de programação específica. Os exemplos incluem arquivos .wsdl (Web Services Description Language) e arquivos de esquema xml (.xsd). ASP.NET pode compilar esses arquivos em assemblies.
A pasta App_Code pode conter quantos arquivos e subpastas você precisar. Você pode organizar seu código-fonte da maneira que achar conveniente, e o ASP.NET ainda compilará todo o código em um único assembly, e esse assembly poderá ser acessado por outro código em qualquer lugar do aplicativo Web.
Perceber
Os controles de usuário não são permitidos na pasta App_Code. Isso inclui controles de usuário de arquivo único, bem como controles de usuário que usam o modelo code-behind. Colocar o controle do usuário no diretório App_Code faz com que o código do controle do usuário seja compilado fora da ordem necessária e, portanto, não é permitido. Observe que não há necessidade de colocar os controles de usuário na pasta App_Code; esses controles já estão disponíveis para páginas em qualquer lugar do aplicativo;
Inferir a linguagem de programação da pasta App_Code
A pasta App_Code não está explicitamente marcada como contendo arquivos escritos em qualquer linguagem de programação. Em vez disso, o ASP.NET infere qual compilador deve ser invocado para a pasta App_Code com base nos arquivos que ela contém. Se a pasta App_Code contiver arquivos .vb, o ASP.NET usará o compilador Visual Basic; se contiver arquivos .cs, o ASP.NET usará o compilador C# e assim por diante.
Se a pasta App_Code contiver apenas arquivos que não indicam explicitamente uma linguagem de programação (como arquivos .wsdl), o ASP.NET usará o compilador padrão do aplicativo da web, que é encontrado no elemento de compilação do aplicativo da web ou no arquivo de configuração do computador. .
Usando várias linguagens de programação na pasta App_Code Como o código-fonte na pasta App_Code é compilado em um único assembly, todos os arquivos na pasta App_Code devem ser escritos na mesma linguagem de programação. Por exemplo, a pasta App_Code não pode conter código-fonte escrito em Visual Basic e C#.
No entanto, você pode configurar seu aplicativo Web para tratar subpastas da pasta App_Code como unidades compiláveis separadas. Dessa forma, cada pasta pode conter código-fonte escrito em uma linguagem de programação diferente. Você especifica essa configuração criando um elemento de compilação no elemento codeSubDirectories do arquivo Web.config e, em seguida, adicionando uma referência à subpasta. O exemplo a seguir ilustra como configurar subpastas denominadas VBCode e CSCode para compilar em diferentes assemblies:
Copiar código
<compilação debug="false">
<códigoSubDiretórios>
<add directoryName="VBCode" />
<add directoryName="CSCode" />
</codeSubDirectories>
</compilation>As referências às subpastas VBCode e CSCode não precisam incluir nenhuma informação sobre as linguagens de programação contidas nas subpastas. Assim como acontece com a própria pasta App_Code, o ASP.NET infere o compilador a ser usado com base nos arquivos da subpasta.
Segurança da pasta App_Code
Os problemas de segurança com o código na pasta App_Code são basicamente os mesmos que os problemas de segurança com o código na pasta Bin - o código é compilado em um assembly em tempo de execução. O que é melhor do que a pasta Bin é que você pode ler o código-fonte dos arquivos na pasta App_Code. No entanto, ainda existem riscos de segurança se você não compreender totalmente o código. Portanto, o código-fonte na pasta App_Code deve ser tratado com o mesmo cuidado que o código compilado gerado a partir do mesmo código-fonte.
Extraído de: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-