Artigo: 316675 - Última revisão: domingo, 13 de Maio de 2007 - Revisão: 6.5

Uma excepção não processada poderá ocorrer quando tenta ligar a uma base de dados do Access de um processo de trabalho 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 refere-se para o seguinte Microsoft .NET Framework Class Library espaço de nomes:
  • System.data.OLEDB

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Uma excepção não processada pode ocorrer nas seguintes circunstâncias:
  • Um processo de trabalho do ASP.NET (Aspnet_wp.exe) é executado sob a conta ASPNET predefinida.
    - e -
  • Não Active a representação nessa aplicação.

    - e -
  • Tenta ligar ou escrever para um acesso da base de dados.
Nestas circunstâncias, poderá receber uma das seguintes excepções:
O motor de base de dados do Microsoft Jet não consegue abrir o ficheiro 'C:\Nwind.mdb'. Já está aberto em modo exclusivo por outro utilizador ou ter permissão para ver os dados.
Operação tem de utilizar uma consulta actualizável.

Causa

Devido a questões de segurança, o processo de trabalho do ASP.NET é executado na conta ASPNET predefinida. Activar a representação de uma aplicação, todos os threads que são executados os pedidos para essa aplicação ser executado sob a conta de processo.

Este problema ocorre porque o ASPNET conta não tem permissões suficientes para ligar a ou escrever para uma base de dados do Access.

Resolução

Para contornar este problema, utilize um dos seguintes métodos:
  • Configurar o processo de trabalho do ASP.NET seja executado sob a conta SYSTEM na secção <processmodel> do Machine.config ficheiro.
  • Por motivos de segurança, a Microsoft recomenda que activem representação numa aplicação do ASP.NET. Este método funciona se o utilizador representado tiver permissões necessárias para o computador e a base de dados que estão a aceder.
  • Conceder ler e escrever as permissões para "Todos" grupo na base de dados e a pasta de base de dados. Este método não é seguro; por este motivo, a Microsoft não recomenda este método.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Quando necessitar de utilizadores ilimitados, suporte em tempo integral e transacções ACID, Microsoft recomenda que utilize Microsoft SQL Server com Microsoft (IIS). Embora o Microsoft Active Server Pages (ASP) funcione com qualquer base de dados compatíveis com OLE DB ou compatível com ODBC, o IIS foi testado exaustivamente. O IIS foi concebido para funcionar com o Microsoft SQL Server no tráfego de transacção alta e ilimitados utilizadores, que podem ocorrer num cenário de Internet.

Nota "ACID" é um acrónimo para as quatro propriedades dos sistemas de processamento de transacções: atomicidade, consistência, isolamento e durabilidade.

ASP suporta a utilização do motor de base de dados Microsoft Jet como uma origem de dados válidos. No entanto, controlador de Microsoft ODBC para o Access e o Microsoft OLE DB Provider for Jet não se destinam para utilização com aplicações de servidor muito exigentes, alta concorrência, tempo inteiro (tais como aplicações Web, aplicações de comércio, as aplicações transaccionais, mensagens servidores e assim sucessivamente).

Passos para reproduzir o comportamento

  1. Crie um novo projecto ASP.NET Web Application no Microsoft Visual C# .NET.
  2. Adicione o seguinte código à secção "Declaração" do seu formulário da Web, que aparece na parte superior da janela Code:
    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 cadeia de ligação conforme apropriado para o ambiente.
  5. Compile o projecto.
  6. Visualiza WebForm1.aspx no browser. Repare que recebe uma das excepções anteriormente mencionadas.

Referências

Para obter informações adicionais, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
306590  (http://support.microsoft.com/kb/306590/ ) Descrição geral da segurança do ASP.NET
307626  (http://support.microsoft.com/kb/307626/ ) Descrição geral de configuração do ASP.NET
Para obter mais informações sobre o <processmodel> secção, visite o seguinte Microsoft Developer Network (MSDN) Web site:
secçã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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )