ID do artigo: 316675 - Última revisão: domingo, 13 de maio de 2007 - Revisão: 6.5

Uma exceção não tratada pode ocorrer quando você tenta se conectar a um banco de dados do Access de um processo de operador do ASP.NET

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Este artigo se refere ao seguinte Microsoft .NET Framework Class Library namespace:
  • System.Data.OLEDB

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Uma exceção não tratada pode ocorrer nas seguintes circunstâncias:
  • Um processo de operador ASP.NET (Aspnet_wp.exe) é executado sob a conta ASPNET padrão.
    - e -
  • Você não ativar representação no aplicativo.

    - e -
  • Tentar conectar-se a ou gravar em um Access banco de dados.
Sob essas circunstâncias, você pode receber uma das seguintes exceções:
O mecanismo de banco de dados Microsoft Jet não pode abrir o arquivo 'C:\Nwind.mdb'. Já está aberto exclusivamente por outro usuário, ou ter permissão para exibir seus dados.
A operação deve usar uma consulta atualizável.

Causa

Devido a preocupações com segurança, o processo de operador ASP.NET é executado sob a conta ASPNET padrão. Se você não habilitar a representação de um aplicativo, todos os threads que executam as solicitações para esse aplicativo executado na conta de processo.

Esse problema ocorre porque o ASPNET conta não tem permissões suficientes para conectar-se a ou gravar em um banco de dados do Access.

Resolução

Para contornar este problema, use um dos seguintes métodos:
  • Configurar o processo do operador ASP.NET para execução sob a conta SYSTEM na seção <processmodel> de Machine.config o arquivo.
  • Por motivos de segurança, a Microsoft recomenda que você ative representação em seu aplicativo ASP.NET. Esse método funciona se o usuário representado tiver permissões necessárias para o computador e o banco de dados que você está acessando.
  • Conceder permissões leitura e gravação para "Todos" grupo no banco de dados e a pasta do banco de dados. Esse método não é seguro; portanto, a Microsoft não recomenda esse método.

Situação

Esse comportamento é por design.

Mais Informações

Quando você precisar usuários ilimitados, suporte em tempo integral e transações ACID, a Microsoft recomenda que você usar o Microsoft SQL Server com Microsoft (IIS). Embora o Microsoft Active Server Pages (ASP) funciona com qualquer banco de dados compatíveis com banco de dados OLE ou compatível com ODBC, IIS foi testado extensivamente. O IIS é projetado para funcionar com o Microsoft SQL Server no tráfego de alta transação e usuários ilimitados, o que podem ocorrer em um cenário da Internet.

Observação "ACID" é um acrônimo para as quatro propriedades de sistemas de processamento de transações: atomicidade, consistência, isolamento, durabilidade.

ASP oferece suporte ao uso do mecanismo de banco de dados Microsoft Jet como uma fonte de dados válidos. No entanto, Driver Microsoft ODBC para Access e Microsoft OLE DB Provider for Jet não são destinados ao uso com aplicativos de servidor de alto-estresse, alta-concorrência, trabalham em período integral (como aplicativos da Web, aplicativos de comércio eletrônico, aplicativos transacionais, mensagens servidores e assim por diante).

Etapas para reproduzir o comportamento

  1. Crie um novo projeto ASP.NET Web Application no Microsoft Visual translation from VPE for Csharp NET..
  2. Adicione o seguinte código à seção "Declaração" de seu formulário da Web, que aparece na parte superior da janela código:
    using System.Data.OleDb;					
  3. Adicione o seguinte código ao evento Page_Load :
        String myConn  ="Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\\Nwind.mdb;";
        String myQuery  = "Insert into Customers(CustomerID,CompanyName) Values ('aaaaa', 'aaaaa')";
    
        OleDbConnection cn = new OleDbConnection(myConn);
        cn.Open();
        OleDbCommand cmd = new OleDbCommand(myQuery, cn);
        cmd.ExecuteNonQuery();
        cn.close();
    					
  4. Modificar a seqüência de conexão conforme apropriado para seu ambiente.
  5. Compile o projeto.
  6. Exiba WebForm1.aspx no navegador. Observe que você receber uma das exceções mencionadas anteriormente.

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
306590  (http://support.microsoft.com/kb/306590/ ) Visão geral sobre a segurança do ASP.NET
307626  (http://support.microsoft.com/kb/307626/ ) Visão geral sobre a configuração do ASP.NET
Para obter mais informações sobre o <processmodel> seção, visite o seguinte Microsoft Developer Network (MSDN) site:
seção <processmodel>
http://msdn2.microsoft.com/en-us/library/7w2sway1(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/7w2sway1(vs.71).aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 2.0
  • Microsoft ADO.NET 1.0
  • Microsoft ASP.NET 1.0
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Office FrontPage 2003
Palavras-chave: 
kbmt kbtshoot kberrmsg kbnofix kbprb kbsystemdata KB316675 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 316675  (http://support.microsoft.com/kb/316675/en-us/ )