猿问

在ASP.NET MVC中实现配置文件提供程序

为了我的一生,我无法让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工作顺利,所以我知道连接字符串很好


拉丁的传说
浏览 495回答 3
3回答

海绵宝宝撒

尝试使用Web Profile Builder。它是一个构建脚本,可以从web.config自动生成一个WebProfile类(等效于ProfileCommon)。

侃侃尔雅

不确定整个问题,但是我在您的代码中注意到了一件事:ProfileCommon profile = (ProfileCommon)ProfileCommon.Create(user.UserName, user.IsApproved) as ProfileCommon;您不需要(ProfileCommon)和as ProfileCommon。它们都执行强制类型转换,但是()引发异常,而as如果无法进行强制类型转换,则返回null。
随时随地看视频慕课网APP
我要回答