为了我的一生,我无法让SqlProfileProvider在我正在处理的MVC项目中工作。我意识到的第一个有趣的事情是Visual Studio不会自动为您生成ProfileCommon代理类。没什么大不了的,因为扩展ProfileBase类很简单。创建ProfileCommon类之后,我编写了以下Action方法来创建用户个人资料。[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"); }我遇到的问题是对ProfileCommon.Create()的调用无法转换为ProfileCommon类型,因此我无法取回我的配置文件对象,这显然会导致下一行失败,因为profile为null。以下是我的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>MembershipProvider工作顺利,所以我知道连接字符串很好
3 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
尝试使用Web Profile Builder。它是一个构建脚本,可以从web.config自动生成一个WebProfile类(等效于ProfileCommon)。
侃侃尔雅
TA贡献1801条经验 获得超16个赞
不确定整个问题,但是我在您的代码中注意到了一件事:
ProfileCommon profile = (ProfileCommon)ProfileCommon.Create(user.UserName, user.IsApproved) as ProfileCommon;
您不需要(ProfileCommon)和as ProfileCommon。它们都执行强制类型转换,但是()引发异常,而as如果无法进行强制类型转换,则返回null。
- 3 回答
- 0 关注
- 494 浏览
添加回答
举报
0/150
提交
取消