Avatar billede the_raze Nybegynder
13. april 2008 - 21:43 Der er 13 kommentarer og
1 løsning

Indsætte i profile ved oprettelse af bruger

Hejsa,

Jeg anvender ASP.NETs authentication, men har brug for at tilføje lidt mere information om brugeren, end man lige umiddelbart har mulighed for.

Derfor har jeg i min web.config oprettet "FirstName, "LastName" og "Case".

Jeg kunne nu godt tænke mig, at i oprettelsesprocessen af brugeren, der indtaster man først de krævede data "Username", "Email, "Password".

Derefter trykker man på en create user knap og ryger videre til en anden side, hvor man kan tilføje "FirstName", "LastName" osv.

Mine Wizard steps fungerer også fint nok.

Men hvornår og hvordan gemmer jeg mine data i brugerens profile?

Jeg har forsøgt følgende:

protected void RegisterUser_CreatedUser(object sender, EventArgs e)
    {
        // Find the correct step
        WizardStepBase step = null;

        for (int i = 0; i < RegisterUser.WizardSteps.Count; i++)
        {
            if (RegisterUser.WizardSteps[i].ID == "NameStep")
            {
                step = RegisterUser.WizardSteps[i];
                break;
            }
        }
        if (step != null)
        {
            Profile.FirstName = ((TextBox)step.FindControl("FirstName")).Text;
            Profile.LastName = ((TextBox)step.FindControl("LastName")).Text;
            Profile.Case = Convert.ToInt32(((TextBox)step.FindControl("Case")).Text);

            // Commit to database
            Profile.Save();
        }
    }

Som er en funktion der ligger i min codebehind, som bliver kaldt "onCreatedUser" i min .aspx.

Problemet ligger dog i, at der opstår en fejl når jeg forsøger at gøre dette - den siger at den ikke kan oprette de data for en anonymous user. Så mit gæt er at brugeren ikke er logget ind..

Så hvad gør jeg? :)

På forhånd tusind tak!
Avatar billede zeth Nybegynder
13. april 2008 - 23:17 #1
Hmm prøv med det her:

ProfileCommon newUser = Membership.CreateUser(username, password);

newUser.FirstName = "...";
newUser.LastName = "fdsfds";
newUser.Save();
Avatar billede the_raze Nybegynder
14. april 2008 - 02:09 #2
Den kan ik rigtig lide at smide typen Membership over i ProfileCommon :(
Avatar billede zeth Nybegynder
14. april 2008 - 04:20 #3
ProfileCommon newUser = ProfileCommon.Create(username, true);

newUser.FirstName = "...";
newUser.LastName = "fdsfds";
newUser.Save();
Avatar billede the_raze Nybegynder
14. april 2008 - 09:11 #4
Der bliver stadig intet gemt i "aspnet_Profile" tabellen i databasen :(
Avatar billede the_raze Nybegynder
14. april 2008 - 09:13 #5
Oh.. Tror det virker nu, havde åbenbart lavet en fejl i første forsøg :)
Avatar billede the_raze Nybegynder
14. april 2008 - 09:31 #6
Hmm.. Er stadig problemer.

Jeg har gjort hvad du sagde, og har tilmed fundet en tutorial, der siger det samme (http://www.codemuch.com/node/5)


Dette er hvad der er i min web.config, og kan vel næsten kun være det eneste, som er skyld i at dataene IKKE bliver gemt i "aspnet_Profile" tabellen?

<connectionStrings>
    <add name="NorthwindConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Northwind.mdf;Integrated Security=True;User Instance=True"
        providerName="System.Data.SqlClient" />
</connectionStrings>
    <system.web>
      <profile defaultProvider="SagsSystemProfileProvider"
            enabled="true">
      <properties>
        <add name="FirstName" type="String" />
        <add name="LastName" type="String" />
        <add name="Case" type="Int32" />
      </properties>
      <providers>
        <clear/>
        <add name="SagsSystemProfileProvider"
            connectionStringName="NorthwindConnectionString"
            applicationName="/"
            type="System.Web.Profile.SqlProfileProvider"/>
      </providers>
    </profile>

Kan i spotte noget jeg gør forkert?
Avatar billede mcnovy Nybegynder
14. april 2008 - 10:07 #7
bruger du en database med navnet northwind..?

og din type="string"
prøv at lave den om til type="System.string"
det samme gælder din Int32

applicationName er ikke skrevet.. har hørt nogle rygter om at man altid skal indtaste den... (er jeg dog ikke sikker på)
Avatar billede mcnovy Nybegynder
14. april 2008 - 10:09 #8
din int32 skal selvf. være System.Int32 og ikke string (bare så den ikke bliver misforstået.. :)
Avatar billede mcnovy Nybegynder
14. april 2008 - 10:13 #9
fik lige set at du også inkluderede din conn string, så det er jo ikke den der er noget galt med..

du kan lige få et udsnit af min web.config

<profile>
      <providers>
        <add name="myProfileProvider" connectionStringName="LocalSqlServer" applicationName="/GameStats" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      </providers>
      <properties>
        <add name="FullName" allowAnonymous="false" type="System.String"/>
        <add name="ProfilePicture" allowAnonymous="false" type="System.String"/>
        <add name ="Afdeling" allowAnonymous="false" type="System.String"/>
        <add name ="Beskrivelse" allowAnonymous="false" type="System.String"/>
      </properties>
    </profile>
Avatar billede the_raze Nybegynder
14. april 2008 - 23:33 #10
McNovy, jeg fik det til at virke :)

Det eneste som dog er mærkeligt, er at jeg stadig intet kan se i aspnet_Profile tabellen, men den gemmer det da i det mindste.. soomewhere.. Ved bare ik hvor.. Hehe :)

Smid et svar..
Avatar billede mcnovy Nybegynder
15. april 2008 - 19:01 #11
har du prøvet at se om den også gemmer det fra en anden computer..?
så det ikke bare er noget der er gemt i din cookie eller lignende.. (hvordan det så skulle være endt der)

i mit tilfælde der gemmer den det i profile ?
det er ikke sådan at du kigger i den forkerte db.. ? :)
synes bare at det virker rimelig relevant at vide hvor den gemmer det, også for at bekræfte det.

men hvem af os skal smide svar..?
Avatar billede the_raze Nybegynder
15. april 2008 - 19:17 #12
Hm.. Den anvender åbenbart stadig en ASPNETDB.MDF, selvom jeg synes at jeg har sat min provider til at være min Northwind.mdf - har du nogle ideer til hvorfor den gør dette?

I starten havde jeg sat det op, så brugernes data lå i ASPNETDB.MDF istedet for min northwind.mdf - men dette har jeg så ændret, da jeg ikke synes det andet var så hensigtsmæssigt i mit tilfælde..

Så lige nu opretter den brugere i BEGGE databaser, men gemmer KUN profiles i ASPNETDB.MDF databasen ... Hvordan kommer jeg af med ASPNETDB.MDF? :)
Avatar billede mcnovy Nybegynder
15. april 2008 - 20:29 #13
min er sat op sådan her

<configuration>
    <connectionStrings>
        <add name="*******ConnectionString" connectionString="Data Source=********;Initial Catalog=*******;Persist Security Info=True;User ID=********;Password=*****" providerName="System.Data.SqlClient"/>
        <remove name="LocalSqlServer"/>
        <add name="LocalSqlServer" connectionString="Data Source=******;Initial Catalog=******; User ID=********;Password=***********" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <system.web>

kan det være fordi du har glemt at vælge remove..?
Avatar billede mcnovy Nybegynder
15. april 2008 - 20:30 #14
i min web.config fil selvfølgelig.. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester