Makale numarası: 908158 - Son Gözden Geçirme: 03 Aralık 2007 Pazartesi - Gözden geçirme: 1.2

ASP.NET 2.0 bir kullanıcı hesabıyla çalışacak şekilde yapılandırılırken bir hata iletisi: "açılamadı geçici bir sınıf oluşturmak için"

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Şu senaryoyu inceleyin:
  • Bir Microsoft ASP.NET 2.0 uygulama yarat
  • ASP.NET 2.0, bir kullanıcı hesabıyla çalışacak şekilde yapılandırıldı.
  • ASP.NET 2. 0'daki <a2>Profil</a2> özelliği SerializeAs öznitelik için XML olarak ayarlanır.
Bu senaryo, ASP.NET 2.0 kullanıcı profili kaydetme ve aşağıdakine benzer bir hata iletisi alabilirsiniz:
[ınvalidoperationexception: geçici bir sınıf oluşturmak için (sonuç = 1).
<a1>hata</a1> CS2001: kaynak dosya 'D:\WINDOWS\TEMP\d0lurtzx.0.cs' bulunamadı
CS2008 hata: Belirtilen bir girdi yok

Neden

Kullanıcı hesabının klasör içeriğini listeleme ve Okuma izinlerini %windir%\Temp klasörü yoksa, bu sorun oluşur.

Çözüm

Bu sorunu gidermek için <a0></a0>, kullanıcı hesabının Liste Ver %windir%\Temp klasörde klasör içeriğini ve Oku izinlerinin.

Daha fazla bilgi

Sorunu yeniden oluşturma adımları

  1. Microsoft ınternet ınformation Services'da Web sitesi oluşturma (IIS) Yöneticisi.
  2. Yerel bir Microsoft Windows NT kullanıcı hesabı oluşturun.
  3. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, cmd yazın ve Tamam ' ı tıklatın.
  4. Komut istemine aşağıdaki komutu yazın:
    <a1>CD</a1> Path
    NotPath, bilgisayardaki Microsoft .NET Framework 2.0 klasörün yolunu gösterir.
  5. Komut istemine şu komutu yazın ve ENTER tuşuna basın:
    Aspnet_regiis-ga komutunu User
    NotUser, adım 2'de oluşturduğunuz kullanıcı hesabını temsil eder.
  6. 2. Adımda oluşturduğunuz hesabı için 1. adımda oluşturduğunuz Web sitesi için uygulama havuzu kimliğini değiştirin.
  7. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, cmd yazın ve Tamam ' ı tıklatın.
  8. Komut isteminde iisreset /restart yazın ve ENTER tuşuna basın.
  9. Bir Web.config dosyası oluşturun ve sonra da aşağıdaki kod örneği bir Web.config dosyasına ekleyin.

    Not<Server>, sunucu adını <User> kullanıcı adı temsil eden <Password><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. Login.aspx adlı bir dosya oluşturun ve sonra da aşağıdaki kod örneği Login.aspx 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. Test.aspx isteyin.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 2.0
Anahtar Kelimeler: 
kbmt kbtshoot kberrmsg kbcode kbprb KB908158 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:908158  (http://support.microsoft.com/kb/908158/en-us/ )