Pour la vie de moi, je ne peux pas obtenir le SqlProfileProvider de travailler dans un projet MVC que je suis en train de travailler sur.
La première chose intéressante que j'ai réalisé, c'est que Visual Studio ne génère pas automatiquement de la ProfileCommon classe proxy pour vous. Ce n'est pas une grosse affaire, puisque c'est simpy une question de l'extension de la ProfileBase classe. Après la création d'un ProfileCommon la classe, j'ai écrit une méthode d'Action pour la création de le profil utilisateur.
[AcceptVerbs("POST")]
public ActionResult CreateProfile(string company, string phone, string fax, string city, string state, string zip)
{
MembershipUser user = Membership.GetUser();
ProfileCommon profile = ProfileCommon.Create(user.UserName, user.IsApproved) as ProfileCommon;
profile.Company = company;
profile.Phone = phone;
profile.Fax = fax;
profile.City = city;
profile.State = state;
profile.Zip = zip;
profile.Save();
return RedirectToAction("Index", "Account");
}
Le problème que je rencontre est que l'appel à ProfileCommon.Créer() ne peut pas lancer de type ProfileCommon, donc je ne suis pas en mesure de récupérer mon objet de profil, ce qui suscite évidemment la ligne suivante à l'échec puisque le profil est null.
Voici un extrait de mon web.config:
<profile defaultProvider="AspNetSqlProfileProvider" automaticSaveEnabled="false" enabled="true">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
<properties>
<add name="FirstName" type="string" />
<add name="LastName" type="string" />
<add name="Company" type="string" />
<add name="Phone" type="string" />
<add name="Fax" type="string" />
<add name="City" type="string" />
<add name="State" type="string" />
<add name="Zip" type="string" />
<add name="Email" type="string" >
</properties>
</profile>
Le MembershipProvider fonctionne sans accroc, donc je sais que la chaîne de connexion est bonne. Juste au cas où il est utile, voici mon ProfileCommon classe:
public class ProfileCommon : ProfileBase
{
public virtual string Company
{
get
{
return ((string)(this.GetPropertyValue("Company")));
}
set
{
this.SetPropertyValue("Company", value);
}
}
public virtual string Phone
{
get
{
return ((string)(this.GetPropertyValue("Phone")));
}
set
{
this.SetPropertyValue("Phone", value);
}
}
public virtual string Fax
{
get
{
return ((string)(this.GetPropertyValue("Fax")));
}
set
{
this.SetPropertyValue("Fax", value);
}
}
public virtual string City
{
get
{
return ((string)(this.GetPropertyValue("City")));
}
set
{
this.SetPropertyValue("City", value);
}
}
public virtual string State
{
get
{
return ((string)(this.GetPropertyValue("State")));
}
set
{
this.SetPropertyValue("State", value);
}
}
public virtual string Zip
{
get
{
return ((string)(this.GetPropertyValue("Zip")));
}
set
{
this.SetPropertyValue("Zip", value);
}
}
public virtual ProfileCommon GetProfile(string username)
{
return ((ProfileCommon)(ProfileBase.Create(username)));
}
}
Toute réflexion sur ce que je fais de mal? Ont tout le reste de vous intégré avec succès un ProfileProvider avec votre ASP.NET les projets MVC?
Je vous remercie à l'avance...