Erro: Pipes nomeados não funcionam quando o processo de trabalho é executado na conta do ASPNET

Sintomas

Poderá receber uma mensagem de erro caso se verifiquem as seguintes condições:
  • Um processo de trabalho do ASP.NET (Aspnet_wp.exe) é executado sob a conta ASPNET predefinida.
  • Não activar a representação nessa aplicação.
  • Utilizar o .NET Data Provider para SQL Server ou o fornecedor OLE DB .NET dados para ligar a uma base de dados.
Poderá receber uma das seguintes mensagens de erro:

Mensagem 1
OleDbException (0x80004005): [DBNETLIB] [ConnectionOpen (Connect()).] O SQL Server não existe ou o acesso negado.]
Mensagem 2
SqlException (0x80004005): [DBNETLIB] [ConnectionOpen (Connect()).] O SQL Server não existe ou o acesso negado.]
Mensagem 3
System.Data.SqlClient.SqlException: O SQL Server não existe ou o acesso negado
Mensagem 4
System.Data.OleDbClient.OleDbException: O SQL Server não existe ou o acesso negado

Causa

Quando o processo de trabalho do ASP.NET é executado sob a conta ASPNET, se não activar a representação numa aplicação, todos os threads que são executados os pedidos para essa aplicação executada sob a conta de processo. A conta ASPNET não é possível estabelecer uma ligação de pipes nomeados para o servidor de base de dados.

Resolução

Para contornar este problema, utilize um dos seguintes métodos:
  • Active a representação em aplicação do ASP.NET. Este método funciona se o utilizador representado tenha acesso ao computador e para o servidor de base de dados aos quais aceder.
  • Utilize Protocol/Internet (TCP) em vez do protocolo de pipes nomeados para ligar à base de dados. Para tal, adicione o seguinte atributo para a cadeia de ligação:
    "Network Library =dbmssocn"
    Por exemplo:
    "User ID=myUserId;Password=myPassword;Initial Catalog=Pubs;Data Source=myServer;Network Library =dbmssocn"
  • Verifique a base de dados para os protocolos que estão activados. Para uma base de dados do SQL Server, execute o utilitário de rede para verificar a existência de protocolos específicos.

Estado

A Microsoft confirmou que este é um erro nos produtos da Microsoft listados na secção "Aplica-se a".

Referências

Para obter informações adicionais sobre a segurança do ASP.NET, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:

Descrição geral de segurança do ASP.NET de 306590

Para mais informações sobre a secção < processModel >, consulte a documentação do MSDN seguinte:
Propriedades

ID do Artigo: 315159 - Última Revisão: 21/02/2017 - Revisão: 1

Comentários