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();
}
}
}
}
}
Özel profil sağlayıcısı uygulamanızı gösterebilir misiniz? –