PROBLEMA: Recebe um erro de "System.IO.FileNotFoundException" quando a aplicação cliente chama um serviço Web

Traduções de Artigos Traduções de Artigos
Artigo: 823196 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando chamar um serviço Web no Microsoft ASP.NET Web aplicação, poderá receber o erro seguinte:
System.IO.FileNotFoundException

Causa

Poderá receber o erro se uma das seguintes condições for verdadeira:
  • O processo de trabalho não tem permissões para ler o directório Temp do processo e o processo de trabalho não tem permissões para escrever o processo de Temp directório.

    Nota A classe de XmlSerializer gera e compila código rapidamente a serialização e anulação da serialização. XmlSerializer utiliza código Document Object Model (CodeDom) para efectuar a compilação. Compilação codeDom utiliza ficheiros temporários num disco. Se o processo de trabalho não tem as permissões de leitura no directório Temp e as permissões de escrita no directório Temp, todas as chamadas ao serviço Web falham. Por conseguinte, o processo de trabalho requer as permissões de leitura no Temp directório e as permissões de escrita no directório Temp.

    - ou -
  • Existem erros de compilação no código gerado pelo XmlSerializer .

Resolução

Permissões de conta processo de trabalho no directório Temp


Para resolver este problema, a conta de processo de trabalho ASP.NET (a conta ASPNET ou a conta de serviço de rede se a aplicação é implementada nos serviços de informação Internet IIS 6.0) tem de ter acesso de leitura e acesso de escrita sobre o Temp directório.

Nota Se utilizar representação, o utilizador representado tem de ter acesso total no directório Temp.

Para atribuir permissões necessárias à conta do processo de trabalho no directório Temp, siga estes passos:
  1. No Explorador do Windows, localize o directório %windir%\temp.
  2. Clique com o botão direito do rato %windir%\temp e, em seguida, clique em Propriedades .
  3. Na janela Propriedades, clique no separador segurança .
  4. Clique em Adicionar escreva ServerName \ASPNET e, em seguida, clique em OK .

    Nota Substituir ServerName com o nome da Web servidor.

    Substituir ASPNET com NETWORK SERVICE se implementou a aplicação no IIS 6.0.
  5. Em Permitir , clique para seleccionar a caixa de verificação Controlo total e, em seguida, clique em OK .

Localizar erros de compilador o código que XmlSerializer gerado


Para localizar erros são gerados pelo compilador, tem de adicionar um parâmetro ao ficheiro Web.config para manter ficheiros gerados pelo compilador. Para o fazer, siga estes passos:
  1. Abra o ficheiro Web.config num editor de texto, tal como o bloco de notas.
  2. Adicione um parâmetro XmlSerialization.Compilation à secção system.diagnostics do código, da seguinte forma:
    <configuration>
        <system.diagnostics>
             <switches>
                <add name="XmlSerialization.Compilation" value="4"/>
             </switches>
        </system.diagnostics>
    </configuration>
  3. Execute a aplicação cliente.

    A aplicação cliente chama o serviço Web.
  4. Verifique se o directório %windir%\temp tem o ficheiro de _tmpname.00.cs e o ficheiro _tmpname.out.

    O ficheiro _tmpname.00.cs é a origem gerada. O ficheiro _tmpname.out deve ter os erros do compilador.

    Nota Activar as permissões de leitura e activar as permissões de escrita para a conta do processo de trabalho (ASPNET ou serviço de rede) para escrever % tmpname % ficheiros no directório Temp.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Passos para reproduzir o comportamento

Criar um serviço Web

  1. Inicie o Microsoft Visual Studio NET..
  2. Crie um novo projecto de serviço Web do ASP.NET utilizando o Microsoft Visual C# .NET ou Microsoft Visual Basic. NET.

    Por predefinição, é criado Service1.asmx.
  3. Nome do projecto WebServiceTemp .
  4. No Solution Explorer, clique com o botão direito do rato Service1.asmx e, em seguida, clique em Código .
  5. No ficheiro Service1.asmx.cs (ou o ficheiro Service1.asmx.vb se estiver a utilizar o Visual Basic. NET), a predefinição uncomment HelloWorld() WebMethod.
  6. No menu criar , clique em criar soluções .

Criar uma aplicação Web do cliente

  1. Criar uma nova aplicação Web do ASP.NET utilizando o Visual C# .NET ou Visual Basic. NET.
  2. Nome do projecto WebAppTemp .
  3. No Solution Explorer, clique com o botão direito do rato em References e, em seguida, clique em Adicionar referência Web .
  4. Na caixa de texto endereço , escreva o seguinte URL para WebServiceTemp :

    http://localhost/WebServiceTemp/Service1.asmx
  5. Clique em Ir e, em seguida, clique em Adicionar referência .
  6. Faça duplo clique em WebForm1 para abrir o código de evento Page_Load .
  7. Acrescentar o código seguinte Page_Load processador de eventos.

    o Visual C# .NET códigos de exemplo
    // Start an instance of the Web service client-side proxy.
    localhost.Service1 myProxy = new localhost.Service1();
    Response.Write( myProxy.HelloWorld());	
    
    Códigos de exemplo do Visual Basic .NET
    'Start an instance of the Web service client-side proxy.
    Dim myProxy As localhost.Service1 = New localhost.Service1()
    Response.Write(myProxy.HelloWorld())
    
  8. No menu criar , clique em criar soluções .

Definir permissões no directório Temp


Para atribuir permissões necessárias à conta do processo de trabalho no directório Temp, siga estes passos:
  1. No Explorador do Windows, localize o directório % windir %.
  2. Clique com o botão direito do rato %windir%\temp e, em seguida, clique em Propriedades .
  3. Na janela Propriedades, clique no separador segurança .
  4. Clique em Adicionar escreva ServerName \ASPNET e, em seguida, clique em OK .
  5. Certifique-se de que a caixa de verificação escrever não está seleccionada em Permitir (Allow) e, em seguida, clique em OK .
  6. Execute a aplicação Web.

    Poderá receber o erro mencionado na secção "Sintomas" deste artigo.

Referências


Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
818364Como aceder a um serviço Web numa aplicação do Windows utilizando o Microsoft Visual Basic .NET

314150Informações gerais para serialização de XML no .NET Framework

815169Como monitorizar aplicações de servidor do ASP.NET

815153Como configurar permissões de ficheiros NTFS para segurança de ASP.NETapplications

Propriedades

Artigo: 823196 - Última revisão: 18 de abril de 2006 - Revisão: 2.3
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Web Services Enhancements for Microsoft .NET 1.1
  • Microsoft Web Services (included with the .NET Framework) 1.0
Palavras-chave: 
kbmt kbxml kbwebserver kbconfig kbwebservices kbprb KB823196 KbMtpt
Traduçã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: 823196

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com