ID do artigo: 908158 - Última revisão: segunda-feira, 3 de dezembro de 2007 - Revisão: 1.2

Mensagem de erro quando ASP.NET 2.0 é configurado para ser executado com uma conta de usuário: "Não é possível gerar uma classe temporária"

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.

Nesta página

Expandir tudo | Recolher tudo

Sintomas

Considere o seguinte cenário:
  • Você cria um aplicativo Microsoft ASP.NET 2.0.
  • O ASP.NET 2.0 é configurado para executar com uma conta de usuário.
  • O atributo SerializeAs da propriedade de perfil no ASP.NET 2.0 é definido como XML .
Nesse cenário, ASP.NET 2.0 não pode salvar o perfil de usuário e você receberá uma mensagem de erro semelhante à seguinte:
[InvalidOperationException: não é possível gerar uma classe temporária (resultado = 1).
Erro CS2001: arquivo de origem 'D:\WINDOWS\TEMP\d0lurtzx.0.cs' não pôde ser encontrado
Erro CS2008: sem entradas especificadas

Causa

Esse problema ocorre se a conta de usuário não tem Listar conteúdo da pasta e permissões de leitura na pasta %windir%\Temp.

Resolução

Para resolver esse problema, conceda a conta de usuário a lista de conteúdo de pastas e ler permissões na pasta %windir%\Temp.

Mais Informações

Etapas para reproduzir o problema

  1. Criar um site no Microsoft Internet Information Services Gerenciador do (IIS).
  2. Crie uma conta de usuário local do Microsoft Windows NT.
  3. Clique em Iniciar , clique em Executar , digite cmd e, em seguida, clique em OK .
  4. No prompt de comando, digite o seguinte comando:
    Path do CD
    Observação Path representa o caminho da pasta Microsoft .NET Framework 2.0 no computador.
  5. No prompt de comando, digite o seguinte comando e pressione ENTER:
    aspnet_regiis - ga User
    Observação User representa a conta de usuário que você criou na etapa 2.
  6. Alterar a identidade do pool de aplicativos para o site que você criou na etapa 1 para a conta que você criou na etapa 2.
  7. Clique em Iniciar , clique em Executar , digite cmd e, em seguida, clique em OK .
  8. No prompt de comando, digite iisreset /restart e, em seguida, pressione ENTER.
  9. Criar um arquivo Web.config e adicione o seguinte exemplo de código para o arquivo Web.config.

    Observação <Server> representa o nome do servidor, <User> representa o nome de usuário, <Password> representa a senha para o usuário e <Catalog> represents the catalog name.
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.web>
        <customErrors mode="Off" />
        <profile defaultProvider="SqlPProvider" enabled="true">
          <providers>
            <add name="SqlPProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=1.2.3400.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="SqlPProviderConnection" />
          </providers>
          <properties>
            <add name="FavoriteURLs" type="System.Collections.Specialized.StringCollection" readOnly="false" serializeAs="Xml" />
          </properties>
        </profile>
        <anonymousIdentification enabled="true" cookieless="UseDeviceProfile" />
        <authentication mode="Forms">
          <forms>
            <credentials passwordFormat="Clear">
              <user name="a" password="a" />
            </credentials>
          </forms>
        </authentication>
        <authorization>
          <deny users="?" />
        </authorization>
      </system.web>
      <connectionStrings>
        <add name="SqlPProviderConnection" connectionString="server=<Server> ;UID=<User>;PWD=<Password>;Initial Catalog=<Catalog>" />
      </connectionStrings>
    </configuration>
  10. Crie um arquivo que é chamado Login.aspx e adicione o seguinte exemplo de código para o file.
    <%@ Page LANGUAGE="cs" %>
    <form runat=server>
    	<asp:literal runat=server id="MyText" Text=""></asp:literal>
    	<asp:TextBox runat=server id="UsernameTextBox" Text="Type a user name"></asp:TextBox>
    	<asp:TextBox runat=server id="PasswordTextBox" Text="Type a password"></asp:TextBox>
    	<asp:Button id="Submit"  Text="Submit" runat="server"/>
    </form>
    <script runat="server" >
    protected void Page_Load(Object source, EventArgs e)
      {
    	
    	MyText.Text += "[Login Page: you are not authenticated]<br>";
          String strUserName  = UsernameTextBox.Text;
          String strPassword  = PasswordTextBox.Text;
    
          bool   fPersist     = false;
          bool   fVerifed     = System.Web.Security.FormsAuthentication.Authenticate(strUserName, strPassword);
          if( fVerifed)
          {
              System.Web.Security.FormsAuthentication.RedirectFromLoginPage(strUserName, fPersist);
          }
      }
    
    </script>
  11. Create a file that is named Test.aspx, and then add the following code example to the Test.aspx file.
    <%@ Page LANGUAGE="cs" Debug="true" %>
    <form runat="server">
    	<asp:Literal runat="server" id="Literal1" Text=""></asp:literal>
    	<asp:Button text="Signout" OnClick="Signout_Click" id="SignOutButton" runat=server/>
    </form>
    <script runat="server" >
    void Page_Load(object sender, EventArgs e) 
    {
    
    	Literal1.Text += "[User.Identity.Name=" + User.Identity.Name +"]<br>";
    	Profile.FavoriteURLs = new System.Collections.Specialized.StringCollection();
    	Profile.FavoriteURLs.Add("MyString1");
    	Profile.FavoriteURLs.Add("MyString2");
    	Profile.FavoriteURLs.Add("MyString3");
    
    
    	if (Profile.FavoriteURLs != null) {
    		for (int i=0; i<Profile.FavoriteURLs.Count; i++) {
    			Literal1.Text += "[FavoriteURLs=" + Profile.FavoriteURLs[i] + "]<br>";
    		}
    	}
    	
    }
    
    
    void Signout_Click(Object sender, EventArgs E) {  
        System.Web.Security.FormsAuthentication.SignOut();
        Response.Redirect(System.Web.Security.FormsAuthentication.LoginUrl);
    }
    </script>
  12. Solicite Test.aspx.

A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
Palavras-chave: 
kbmt kbtshoot kberrmsg kbcode kbprb KB908158 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: 908158  (http://support.microsoft.com/kb/908158/en-us/ )