ASP.NET implantação da Web usando o Visual Studio: solução de problemas

por Tom Dykstra

Baixar o Projeto Inicial

Esta série de tutoriais mostra como implantar (publicar) um aplicativo Web ASP.NET para Serviço de Aplicativo do Azure Aplicativos Web ou para um provedor de hospedagem de terceiros usando o Visual Studio 2012 ou o Visual Studio 2010. Para obter informações sobre a série, consulte o primeiro tutorial da série.

Esta página descreve alguns problemas comuns que podem surgir quando você implanta um aplicativo Web ASP.NET usando o Visual Studio. Para cada uma delas, uma ou mais causas possíveis e soluções correspondentes são fornecidas.

Os cenários mostrados se aplicam aos provedores de hospedagem do Azure e de terceiros. Para saber mais sobre como solucionar problemas de aplicativos Web no Serviço de Aplicativo do Azure, confira os seguintes recursos:

Erro do servidor no aplicativo '/' – As configurações de erro personalizadas atuais impedem que os detalhes do erro sejam exibidos remotamente

Cenário

Depois de implantar um site em um host remoto, você recebe uma mensagem de erro que menciona a configuração customErrors no arquivo Web.config, mas não indica qual foi a causa real do erro:

Server Error in '/' Application.
Runtime Error 

Description: An application error occurred on the server. The current custom error settings 
for this application prevent the details of the application error from being viewed remotely 
(for security reasons). It could, however, be viewed by browsers running on the local server 
machine. 

Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".

Causa e solução possíveis

Por padrão, ASP.NET mostra informações detalhadas de erro somente quando seu aplicativo Web está em execução no computador local. Geralmente, você não deseja exibir informações detalhadas de erro quando seu aplicativo Web está disponível publicamente pela Internet, pois os hackers podem ser capazes de usar essas informações para encontrar vulnerabilidades no aplicativo. No entanto, quando você está implantando um site ou atualizações em um site, às vezes algo vai dar errado e você precisa obter a mensagem de erro real.

Para permitir que o aplicativo exiba mensagens de erro detalhadas quando ele for executado no host remoto, edite o arquivo Web.config para definir o modo customErrors desativado, reimplante o aplicativo e execute o aplicativo novamente:

  1. Se o aplicativo Web.config arquivo tiver um elemento customErrors no elemento system.web, altere o atributo de modo para "desativado". Caso contrário, adicione um elemento customErrors no elemento system.web com o atributo mode definido como "desativado", conforme mostrado no exemplo a seguir:

    <configuration>
      <system.web>
        <customErrors mode="off"/>
      </system.web>
    </configuration>
    
  2. Implante o aplicativo.

  3. Execute o aplicativo e repita o que você fez anteriormente que causou o erro. Agora você pode ver qual é a mensagem de erro real.

  4. Quando você tiver resolvido o erro, restaure a configuração customErrors original e reimplante o aplicativo.

Não é possível criar/sombrear a cópia 'ContosoUniversity' quando esse arquivo já existir.

Cenário

Ao tentar executar um projeto no Visual Studio, você obtém uma página de erro com uma mensagem como o seguinte exemplo:

Erro de servidor no aplicativo '/'. Não é possível criar/sombrear a cópia 'ContosoUniversity' quando esse arquivo já existir.

Causa e solução possíveis

Aguarde um minuto e atualize o navegador ou recompile o site e tente executá-lo novamente.

O acesso é negado em uma página da Web que usa SQL Server Compact

Cenário

Quando você implanta um site que usa SQL Server Compact e executa uma página no site implantado que acessa o banco de dados, você vê a seguinte mensagem de erro:

Acesso negado. (Exceção de HRESULT: 0x80070005 (E_ACCESSDENIED))

Causa e solução possíveis

A conta NETWORK SERVICE no servidor precisa ser capaz de ler binários nativos do SQL Service Compact que estão na pasta bin\amd64 ou bin\x86 , mas não tem permissões de leitura para essas pastas. Defina a permissão de leitura para NETWORK SERVICE na pasta bin , estendendo as permissões para subpastas.

Não é possível ler o arquivo de configuração devido a permissões insuficientes

Cenário

Quando você clica no botão Publicar do Visual Studio para implantar um aplicativo no IIS no computador local, a publicação falha e a janela Saída mostra uma mensagem de erro semelhante a esta:

Ocorreu um erro ao ler o Arquivo de Configuração do IIS 'MACHINE/REDIRECTION'. A identidade que executou esta operação foi... Erro: não é possível ler o arquivo de configuração devido a permissões insuficientes.

Causa e solução possíveis

Para usar a publicação com um clique no IIS em seu computador local, você deve estar executando o Visual Studio com permissões de administrador. Feche o Visual Studio e reinicie-o com permissões de administrador.

Não foi possível se conectar ao computador de destino... Usando o processo especificado

Cenário

Quando você clica no botão publicar do Visual Studio para implantar um aplicativo, a publicação falha e a janela Saída mostra uma mensagem de erro semelhante a esta:

Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server. 
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.

Causa e solução possíveis

Um servidor proxy está interrompendo a comunicação com o servidor de destino. Na Painel de Controle do Windows ou no Explorer da Internet, selecione Opções de Internet e selecione a guia Conexões. Na caixa de diálogo Propriedades da Internet, clique em Configurações de LAN. Na caixa de diálogo Configurações da LAN (Rede de Área Local), desmarque a caixa de seleção Detectar configurações automaticamente . Em seguida, clique no botão publicar novamente.

Se o problema persistir, entre em contato com o administrador do sistema para determinar o que pode ser feito com as configurações de proxy ou firewall. O problema ocorre porque a Implantação da Web usa uma porta não padrão para implantação do Serviço de Gerenciamento Web (8172); para outras conexões, a Implantação da Web usa a porta 80. Quando você está implantando em um provedor de hospedagem de terceiros, normalmente você está usando o Serviço de Gerenciamento da Web.

O pool de aplicativos padrão do .NET 4.0 não existe

Cenário

Ao implantar um aplicativo que requer o .NET Framework 4, você verá a seguinte mensagem de erro:

O pool de aplicativos padrão do .NET 4.0 não existe ou o aplicativo não pôde ser adicionado. Verifique se ASP.NET 4.0 está instalado neste computador.

Causa e solução possíveis

ASP.NET 4 não está instalado no IIS. Se o servidor no qual você está implantando for seu computador de desenvolvimento e tiver o Visual Studio 2010 instalado nele, ASP.NET 4 será instalado no computador, mas pode não estar instalado no IIS. No servidor no qual você está implantando, abra um prompt de comando com privilégios elevados e instale ASP.NET 4 no IIS executando os seguintes comandos:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

Talvez você também precise definir manualmente a versão .NET Framework do pool de aplicativos padrão. Para obter mais informações, consulte o tutorial Implantando no IIS como um ambiente de teste nesta série.

O formato da cadeia de caracteres de inicialização não está em conformidade com a especificação começando no índice 0.

Cenário

Depois de implantar um aplicativo usando uma publicação com um clique, ao executar uma página que acessa o banco de dados, você receberá a seguinte mensagem de erro:

O formato da cadeia de caracteres de inicialização não está em conformidade com a especificação começando no índice 0.

Causa e solução possíveis

Abra o arquivo Web.config no site implantado e marcar para ver se os valores da cadeia de conexão começam com $(ReplaceableToken_, como no exemplo a seguir:

<connectionStrings>
  <add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
  <add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

Se as cadeias de conexão forem semelhantes a este exemplo, edite o arquivo de projeto e adicione a seguinte propriedade ao elemento PropertyGroup que é para todas as configurações de build:

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

Em seguida, reimplante o aplicativo.

Erro de servidor interno HTTP 500

Cenário

Ao executar o site implantado, você verá a seguinte mensagem de erro sem informações específicas indicando a causa do erro:

Erro HTTP 500 – Erro interno do servidor.

Causa e solução possíveis

Há muitas causas de 500 erros, mas uma causa possível se você estiver seguindo esses tutoriais é que você colocou um elemento XML no lugar errado em um dos arquivos de transformação Web.config. Por exemplo, você obteria esse erro se colocasse a transformação que insere um <elemento <de localização> em system.web> em vez de diretamente na <configuração>. Você pode usar o Web.config recurso de visualização de transformação para verificar se as transformações estão funcionando conforme o esperado. A solução se você encontrar uma transformação codificada incorretamente será corrigir o arquivo de transformação e reimplantar. Se um erro não for óbvio, tente comentar transformações e reimplantar para ver qual delas está causando o erro 500.

Erro de servidor interno HTTP 500.21

Cenário

Ao executar o site implantado, você verá a seguinte mensagem de erro:

Erro HTTP 500.21 – Erro interno do servidor. O manipulador "PageHandlerFactory-Integrated" tem um módulo inválido "ManagedPipelineHandler" em sua lista de módulos.

Causa e solução possíveis

O site que você implantou destinos ASP.NET 4, mas ASP.NET 4 não está registrado no IIS no servidor. No servidor, abra um prompt de comando com privilégios elevados e registre ASP.NET 4 executando os seguintes comandos:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru

Talvez você também precise definir manualmente a versão .NET Framework do pool de aplicativos padrão. Para obter mais informações, consulte o tutorial Implantando no IIS como um ambiente de teste nesta série.

Falha ao abrir o banco de dados de SQL Server Express de logon no App_Data

Cenário

Você atualizou a cadeia de conexão de arquivoWeb.configpara apontar para um banco de dados SQL Server Express como um arquivo .mdf na pasta App_Data e, na primeira vez que executar o aplicativo, verá a seguinte mensagem de erro:

System.Data.SqlClient.SqlException: não é possível abrir o banco de dados "DatabaseName" solicitado pelo logon. Falha no logon.

Causa e solução possíveis

O nome do arquivo .mdf não pode corresponder ao nome de nenhum banco de dados SQL Server Express que já existiu no computador, mesmo que você tenha excluído o arquivo .mdf do banco de dados existente anteriormente. Altere o nome do arquivo .mdf para um nome que nunca foi usado como nome de banco de dados e altere o arquivo Web.config para usar o novo nome. Como alternativa, você pode usar SQL Server Management Studio Express para excluir bancos de dados SQL Server Express existentes anteriormente.

Compatibilidade do modelo Não é possível verificar

Cenário

Você atualizou a cadeia de conexão de arquivoWeb.configpara apontar para um novo banco de dados SQL Server Express e, na primeira vez que executar o aplicativo, verá a seguinte mensagem de erro:

A compatibilidade do modelo não pode ser verificada porque o banco de dados não contém metadados de modelo. Verifique se IncludeMetadataConvention foi adicionado às convenções DbModelBuilder.

Causa e solução possíveis

Se o nome do banco de dados que você colocou no arquivo Web.config já tiver sido usado antes no computador, um banco de dados já poderá existir com algumas tabelas nele. Selecione um novo nome que não tenha sido usado no computador antes e altere o arquivo Web.config para apontar para usar esse novo nome de banco de dados. Como alternativa, você pode usar SQL Server Express Utilitário ou SQL Server Management Studio Express para excluir o banco de dados existente.

Erro sql quando um script tenta criar usuários ou funções

Cenário

Você está usando a implantação de banco de dados configurada na guia Pacote/Publicar SQL , scripts SQL executados durante a implantação incluem Comandos Criar Usuário ou Criar Função e a execução de script falha quando esses comandos são executados. Você pode ver mensagens mais detalhadas, como as seguintes:

The approximate location of the error was between lines '1' and '3' of the script. 
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.

Se esse erro ocorrer quando você tiver configurado a implantação de banco de dados no assistente Publicar Web em vez da guia Pacote/Publicar SQL , crie um thread no fórum Configuração e Implantação e a solução será adicionada a esta página de solução de problemas.

Causa e solução possíveis

A conta de usuário que você está usando para executar a implantação não tem permissão para criar usuários ou funções. Por exemplo, a empresa de hospedagem pode atribuir as funções db_datareader, db_datawriter e db_ddladmin à conta de usuário que ela configura para você. Eles são suficientes para criar a maioria dos objetos de banco de dados, mas não para criar usuários ou funções. Uma maneira de evitar o erro é excluindo usuários e funções da implantação do banco de dados. Você pode fazer isso editando o elemento PreSource para o script gerado automaticamente do banco de dados para que ele inclua os seguintes atributos:

CopyAllUsers=false, CopyAllRoles=false

Para obter informações sobre como editar o elemento PreSource no arquivo de projeto, consulte Como editar configurações de implantação no arquivo de projeto. Se os usuários ou funções no banco de dados de desenvolvimento precisarem estar no banco de dados de destino, entre em contato com o provedor de hospedagem para obter assistência.

SQL Server erro de tempo limite ao executar scripts personalizados durante a implantação

Cenário

Você especificou scripts SQL personalizados a serem executados durante a implantação e, quando a Implantação da Web os executa, eles atingiram o tempo limite.

Causa e solução possíveis

A execução de vários scripts que têm modos de transação diferentes pode causar erros de tempo limite. Por padrão, os scripts gerados automaticamente são executados em uma transação, mas os scripts personalizados não. Se você selecionar a opção Extrair dados e/ou esquema de um banco de dados existente na guia Pacote/Publicar SQL e, se você adicionar um script SQL personalizado, deverá alterar as configurações de transação em alguns scripts para que todos os scripts usem as mesmas configurações de transação. Para obter mais informações, consulte Como implantar um banco de dados com um projeto de aplicativo Web.

Se você tiver definido as configurações de transação para que todas sejam iguais, mas ainda receberem esse erro, uma possível solução alternativa será executar os scripts separadamente. Na grade Scripts de Banco de Dados na guia Pacote/Publicar SQL, desmarque a caixa Incluir marcar para o script que causa o erro de tempo limite e publique o projeto. Em seguida, volte para a grade Scripts de Banco de Dados, selecione a caixa Incluir marcar do script e desmarque as caixas Incluir marcar para os outros scripts. Em seguida, publique o projeto novamente. Desta vez, quando você publica, somente o script personalizado selecionado é executado.

Os dados de fluxo do manifesto do site ainda não estão disponíveis

Cenário

Ao instalar um pacote usando o arquivo deploy.cmd com a opção t (teste), você verá a seguinte mensagem de erro:

Erro: os dados de fluxo de 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript' ainda não estão disponíveis.

Causa e solução possíveis

A mensagem de erro significa que o comando não pode produzir um relatório de teste. No entanto, o comando poderá ser executado se você usar a opção y (instalação real). A mensagem indica apenas que há um problema ao executar o comando no modo de teste.

Este aplicativo requer ManagedRuntimeVersion v4.0

Cenário

Ao tentar implantar, você verá a seguinte mensagem de erro:

O pool de aplicativos que você está tentando usar tem a propriedade 'managedRuntimeVersion' definida como 'v2.0'. Esse aplicativo requer 'v4.0'.

Causa e solução possíveis

ASP.NET 4 não está instalado no IIS. Se o servidor no qual você está implantando for seu computador de desenvolvimento e tiver o Visual Studio 2010 instalado nele, ASP.NET 4 será instalado no computador, mas pode não estar instalado no IIS. No servidor no qual você está implantando, abra um prompt de comando com privilégios elevados e instale ASP.NET 4 no IIS executando os seguintes comandos:

cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i

Não é possível converter Microsoft.Web.Deployment.DeploymentProviderOptions

Cenário

Ao implantar um pacote, você verá a seguinte mensagem de erro:

Não é possível converter o objeto do tipo 'Microsoft.Web.Deployment.DeploymentProviderOptions' em 'Microsoft.Web.Deployment.DeploymentProviderOptions'.

Causa e solução possíveis

Você está tentando implantar do Gerenciador do IIS usando a interface do usuário da Implantação da Web 1.1 em um servidor que tenha a Implantação da Web 2.0 instalada. Se você estiver usando a Ferramenta de Administração Remota do IIS para implantar importando um pacote, marcar a caixa de diálogo Novos Recursos Disponíveis ao estabelecer a conexão. (Essa caixa de diálogo só pode ser mostrada uma vez quando a conexão é estabelecida pela primeira vez. Para limpar a conexão e recomeçar, feche o Gerenciador do IIS e inicie-o novamente inserindo inetmgr /reset no prompt de comando.) Se um dos recursos listados for a interface do usuário de implantação da Web e tiver um número de versão inferior a 8, o servidor no qual você está implantando poderá ter as versões 1.1 e 2.0 da Implantação da Web instaladas. Para implantar a partir de um cliente que tenha o 2.0 instalado, o servidor deve ter apenas a Implantação da Web 2.0 instalada. Você precisará entrar em contato com seu provedor de hospedagem para resolve esse problema.

Não é possível carregar os componentes nativos do SQL Server Compact

Cenário

Ao executar o site implantado, você verá a seguinte mensagem de erro:

Não é possível carregar os componentes nativos de SQL Server Compact correspondentes ao provedor ADO.NET da versão 8482. Instale a versão correta do SQL Server Compact. Consulte o artigo do KB 974247 para obter mais detalhes.

Causa e solução possíveis

O site implantado não tem subpastas amd64 e x86 com os assemblies nativos nelas na pasta bin do aplicativo. Em um computador que tenha SQL Server Compact instalado, os assemblies nativos estão localizados em C:\Arquivos de Programas\Microsoft SQL Server Compact Edition\v4.0\Private. A melhor maneira de colocar os arquivos corretos nas pastas corretas em um projeto do Visual Studio é instalar o pacote NuGet SqlServerCompact. A instalação do pacote adiciona um script pós-build para copiar os assemblies nativos para amd64 e x86. No entanto, para que elas sejam implantadas, você precisa incluí-las manualmente no projeto. Para obter mais informações, consulte o tutorial Implantando SQL Server Compact.

Erro "O caminho não é válido" depois de implantar um aplicativo Entity Framework Code First

Cenário

Você implanta um aplicativo que usa Migrações do Entity Framework Code First e um DBMS, como SQL Server Compact que armazena seu banco de dados em um arquivo na pasta App_Data. Você Migrações do Code First configurado para criar o banco de dados após sua primeira implantação. Ao executar o aplicativo, você recebe uma mensagem de erro como o seguinte exemplo:

O caminho não é válido. Verifique o diretório do banco de dados. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]

Causa e solução possíveis

O Code First está tentando criar o banco de dados, mas a pasta App_Data não existe. Você não tinha nenhum arquivo na pasta App_Data quando implantou ou selecionou Excluir App_Data na guia Pacote/Publicar Web do Project janela Propriedades. O processo de implantação não criará uma pasta no servidor se não houver nenhum arquivo na pasta a ser copiado para o servidor. Se você já tiver configurado o banco de dados no site, o processo de implantação excluirá os arquivos e a própria pasta App_Data se você selecionou Remover arquivos adicionais no destino no perfil de publicação. Para resolver o problema, coloque um arquivo de espaço reservado, como um arquivo .txt na pasta App_Data , verifique se você não tem Excluir App_Data selecionado e reimplantar.

"O objeto COM que foi separado de seu RCW subjacente não pode ser usado."

Cenário

Você tem usado com êxito a publicação com um clique para implantar seu aplicativo e, em seguida, começa a receber este erro:

Falha na tarefa de implantação da Web. (Não foi possível concluir a solicitação para a URL do agente remoto '<https://serverurl.com/msdeploy.axd?site=sitename>'.)
Não foi possível concluir a solicitação para a URL do agente remoto '<https://url/msdeploy.axd?site=sitename>'.
A solicitação foi anulada: a solicitação foi cancelada.
O objeto COM que foi separado de seu RCW subjacente não pode ser usado.

Possível causa e solução

Fechar e reiniciar o Visual Studio geralmente é tudo o que é necessário para resolve esse erro.

Falha na implantação porque as credenciais de usuário usadas para publicação não têm a autoridade setACL

Cenário

A publicação falha com um erro que indica que você não tem autoridade para definir permissões de pasta (a conta de usuário que você está usando não tem autoridade setACL).

Possível causa e solução

Por padrão, o Visual Studio define permissões de leitura na pasta raiz do site e permissões de gravação na pasta App_Data. Se você souber que as permissões padrão nas pastas do site estão corretas e não precisam ser definidas, desabilite esse comportamento adicionando <IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination ao arquivo de perfil de publicação> (para afetar um único perfil) ou ao arquivo wpp.targets (para afetar todos os perfis). Para obter informações sobre como editar esses arquivos, consulte Como editar configurações de implantação em arquivos de perfil (.pubxml).

Erros de acesso negado quando o aplicativo tenta gravar em uma pasta de aplicativo

Cenário

Seu aplicativo erro ao tentar criar ou editar um arquivo em uma das pastas do aplicativo, porque ele não tem autoridade de gravação para essa pasta.

Possível causa e solução

Por padrão, o Visual Studio define permissões de leitura na pasta raiz do site e permissões de gravação na pasta App_Data. Se o aplicativo precisar de acesso de gravação a uma subpasta, você poderá definir permissões para essa pasta, conforme mostrado nos tutoriais Definindo permissões de pasta e implantando no ambiente de produção nesta série. Se o aplicativo precisar de acesso de gravação à pasta raiz do site, você precisará impedi-lo de definir o acesso somente leitura na pasta raiz adicionando <IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination ao arquivo de perfil de publicação> (para afetar um único perfil) ou ao arquivo wpp.targets (para afetar todos os perfis). Para obter informações sobre como editar esses arquivos, consulte Como editar configurações de implantação em arquivos de perfil (.pubxml).

Erro de configuração – o atributo targetFramework faz referência a uma versão posterior à versão instalada do .NET Framework

Cenário

Você publicou com êxito um projeto Web direcionado ASP.NET 4.5, mas ao executar o aplicativo (com o modo customErrors definido como "desativado" no arquivo Web.config), você recebe o seguinte erro:

O atributo 'targetFramework' no <elemento de compilação> do arquivo Web.config é usado apenas para direcionar a versão 4.0 e posterior do .NET Framework (por exemplo, '<compilation targetFramework="4.0">'). O atributo 'targetFramework' atualmente faz referência a uma versão posterior à versão instalada do .NET Framework. Especifique uma versão de destino válida do .NET Framework ou instale a versão necessária do .NET Framework.

A caixa Erro de Origem da página de erro realça a seguinte linha de Web.config como a causa do erro:

<compilation targetFramework="4.5" />

Possível causa e solução

O servidor não dá suporte ao ASP.NET 4.5. Entre em contato com o provedor de hospedagem para determinar quando e se o suporte para ASP.NET 4.5 pode ser adicionado. Se a atualização do servidor não for uma opção, você precisará implantar um projeto Web direcionado ASP.NET 4 ou anterior.

Se você implantar um projeto Web ASP.NET 4 ou anterior no mesmo destino, selecione a caixa Remover arquivos adicionais no destino marcar na guia Configurações do assistente Publicar Web. Se você não selecionar Remover arquivos adicionais no destino, continuará a obter a página Erro de Configuração.

As janelas propriedades do projeto incluem uma lista suspensa estrutura de destino, mas você não pode resolve esse problema apenas alterando-o de .NET Framework 4.5 para .NET Framework 4. Se você alterar a estrutura de destino para uma versão anterior da estrutura, o projeto ainda terá referências aos assemblies da versão da estrutura posterior e não será executado. Você precisa alterar manualmente essas referências ou criar um novo projeto direcionado .NET Framework 4 ou anterior. Para obter mais informações, consulte direcionamento de .NET Framework para sites.

Erros de Confiança Média

Cenário

Quando você executa seu aplicativo em produção, ele recebe um erro relacionado à confiança média.

Possível causa e solução

Muitos provedores de hospedagem de terceiros executam seu site em confiança média, o que significa que há algumas coisas que ele não tem permissão para fazer. Por exemplo, o código do aplicativo não pode acessar o Registro do Windows e não pode ler ou gravar arquivos que estão fora da hierarquia de pastas do aplicativo. Por padrão, seu aplicativo é executado em confiança total no computador local, o que significa que o aplicativo pode ser capaz de fazer coisas que falhariam quando você o implantasse em produção.

Você pode configurar o aplicativo para ser executado em confiança média no ambiente do IIS local para solucionar problemas. Para fazer isso, abra o aplicativo Web.config arquivo e adicione um elemento de confiança no elemento system.web , conforme mostrado neste exemplo.

<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium" />
    <!-- Settings -->
  </system.web>
</configuration>

O aplicativo agora será executado em confiança média no IIS, mesmo no computador local.

Não faça isso se você estiver implantando em Serviço de Aplicativo do Azure, pois o Azure não requer confiança média. No momento em que este tutorial está sendo escrito em fevereiro de 2012, usar esse método para fazer seu aplicativo ser executado em confiança média causará um erro no Azure.

Se você estiver usando Migrações do Entity Framework Code First e estiver implantando em um provedor de hospedagem que executa seu aplicativo em confiança média, verifique se você tem a versão 5.0 ou posterior instalada. No Entity Framework versão 4.3, as migrações exigem confiança total para atualizar o esquema de banco de dados.

Erro HTTP 404.17 Não Encontrado

Cenário

Ao executar o site implantado em seu computador de desenvolvimento no IIS, você verá a seguinte mensagem de erro informando que o servidor não pode processar Default.aspx:

Erro HTTP 404.17 – Não encontrado

O conteúdo solicitado parece ser um script e não será atendido pelo manipulador de arquivos estáticos.

Possível causa e solução

ASP.NET 4.5 pode não estar instalado no computador. Consulte as etapas no tutorial Implantando no IIS como um ambiente de teste nesta série que explicam como instalar ASP.NET 4.5.