2011-11-07 20 views
5

Web sitesinden web uygulamasına taşınarak iyileştirdim, web sitemde profilim var.Web uygulamasında profili nasıl kullanabilirim

Profilim işe yaramadı, bu yüzden System.Web.ProfileProvider uygulamasında ve ProfileBase sınıfında bir ProfilBase yaratıyorum HbpContext.Current.Profile.SetPropertyValue ve GetPropertyValue kullanıyorum. HttpContext.Current.Profile benim ProfileProvider yöntemimi çağırmıyor çünkü ben bu onarımı olabilir ama mantıksal bir hata var, ama çalışıyor? ya da belki de web uygulamasında profil için başka bir uygulama var mı? web.config'de

public class ProfileCommon : ProfileBase 
{ 
    public string FirstName 
    { 
     get 
     { 
      return HttpContext.Current.Profile.GetPropertyValue("FirstName").ToString(); 
     } 
     set 
     { 
      HttpContext.Current.Profile.SetPropertyValue("FirstName", value); 
     } 
    } 
} 

<profile inherits="BaniBookWebApp.Code.Core.ProfileCommon"> 
    <providers> 
    <add name="CustomProfileProvider" type="BaniBookWebApp.Code.Core.CustomProfileProvider"/> 
    </providers>  
</profile> 

CustomProfileProvider:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using eLearn2Model; 
using System.Collections; 
using System.Configuration; 

namespace AccessControl 
{ 
    public class ProfileProvider : System.Web.Profile.ProfileProvider 
    { 
     public ProfileProvider() 
     { 
     } 

     public override int DeleteInactiveProfiles(System.Web.Profile.ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) 
     { 
      int res = -1; 
      using (var db = new eLearn2Entities()) 
      { 
       List<Profile> profiles = (from m in db.Profiles 
               where (m.LastUpdatedDate.CompareTo(userInactiveSinceDate) < 0) 
               select m).ToList(); 
       foreach (Profile profile in profiles) 
       { 
        if (profile != null) 
        { 
         db.Profiles.DeleteObject(profile); 
         res = db.SaveChanges(); 
        } 
       } 
      } 
      return res; 
     } 

     public override int DeleteProfiles(string[] usernames) 
     { 
      int res = -1; 
      using (var db = new eLearn2Entities()) 
      { 
       foreach (string username in usernames) 
       { 
        Profile profile = (from m in db.Profiles 
               join n in db.Users on m.UserId equals n.UserId 
               where n.UserName == username 
               select m).SingleOrDefault(); 
        if (profile != null) 
        { 
         db.Profiles.DeleteObject(profile); 
         res = db.SaveChanges(); 
        } 
       } 
      } 
      return res; 
     } 

     public override int DeleteProfiles(System.Web.Profile.ProfileInfoCollection profiles) 
     { 
      throw new NotImplementedException(); 
     }  

     public override System.Configuration.SettingsPropertyValueCollection GetPropertyValues(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyCollection collection) 
     { 
      System.Configuration.SettingsPropertyValueCollection spvc = new System.Configuration.SettingsPropertyValueCollection(); 
      lock (collection.SyncRoot) 
      { 
       foreach (object item in collection) 
       { 
        SettingsProperty sp = (SettingsProperty)item; 
        SettingsPropertyValue spv = new SettingsPropertyValue(sp); 
        spvc.Add(spv); 
       } 
      } 
      return spvc; 
     } 

     public override void SetPropertyValues(System.Configuration.SettingsContext context, System.Configuration.SettingsPropertyValueCollection collection) 
     { 
      string PropertyNames_ = string.Empty; 
      string PropertyValuesString_ = string.Empty; 
      string userID = string.Empty; 
      lock (collection.SyncRoot) 
      { 
       foreach (object item in collection) 
       { 
        SettingsPropertyValue spv = (SettingsPropertyValue)item; 
        if (spv.PropertyValue != null) 
        { 
         if (!string.IsNullOrEmpty(spv.PropertyValue.ToString())) 
         { 
          if (spv.Name.Equals("UserID")) 
          { 
           userID = spv.PropertyValue.ToString(); 
          } 
          else 
          { 
           PropertyNames_ += spv.Name + ";"; 
           PropertyValuesString_ += spv.PropertyValue.ToString() + ";"; 
          } 
         } 
        } 
       }//foreach    
      }//lock 

      try 
      { 
       using (var db = new eLearn2Entities()) 
       { 
        bool isAuthenticated = bool.Parse(context["IsAuthenticated"].ToString()); 

        Profile profile = new Profile() 
        { 
         UserId = Guid.Parse(userID),      
         PropertyValuesString = PropertyValuesString_, 
         PropertyNames = PropertyNames_, 
         LastUpdatedDate = DateTime.UtcNow 
        }; 
        db.Profiles.AddObject(profile); 
        db.SaveChanges(); 
       } 
      } 
      catch 
      { 
       using (var db = new eLearn2Entities()) 
       { 
        //bookmark gives me an error said multiple record 
        Guid myID = Guid.Parse(userID); 
        Profile existed_profile = db.Profiles.Where 
         (item => item.UserId == myID).SingleOrDefault() as Profile; 

        existed_profile.PropertyValuesString = PropertyValuesString_; 
        existed_profile.PropertyNames = PropertyNames_; 
        existed_profile.LastUpdatedDate = DateTime.UtcNow; 

        db.Profiles.ApplyOriginalValues(existed_profile); 
        db.SaveChanges(); 
       } 

      } 
     } 
    } 
} 
+0

Özel profil sağlayıcısı uygulamanızı gösterebilir misiniz? –

cevap

3

Eğer web.config = "true" etkin eklenmesi denediniz mi?

<profile inherits="BaniBookWebApp.Code.Core.ProfileCommon" enabled="true"> 
İlgili konular