RE: getting Membership userid to use and store in a custom databas



Hi Tdar,

Thanks for your further followup.
After viewing the code you provided and performing some tests on ourside,
here are some of my suggestions on this:

1. As for the ASP.NET Profiles, it is user specific, so please make sure
when you update the Profile , the current user has actually login the web
site. In other word, the current user is not under anonymous status. (We
can enable anonymousIdentify so as to enable anonymous user for profile
services....)

2. If #1 is ok. Then, we should make sure that each time after we set new
values on user's profile, we have actually update the Profile values into
the underlying persistent store (database....). Though we can set the
Profile service to update Automatically as below:

<system.web>
<profile enabled="true" automaticSaveEnabled="true" >

this only works when our page is normally ends, there is no other code
which end the page request in the middle. And in your code you use
Response.Redirect, it may cause the Profile values haven't been updated to
db, so to make sure this, I suggest you call the "Profile.Save()" before
you call Response.Redirect, like below:

=========
Sub btnUpdatePreferences_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
'Profile.PreferredBackgroundColor =
Color.FromName(ddlColor.SelectedValue)
Profile.dbman_id_letter = dbmanletter.Text
Profile.dbman_user_password = dbmancode.Text

Profile.Save()


Response.Redirect(Request.Url.LocalPath)
End Sub
=========

This works well on my side. BTW, as for System.Drawing.Color, you need to
reference the System.Drawing.dll in your web application first, then we can
access the System.Drawing Namespace.... Also, we can define the Color
propety in profile like:

<group name="Favorite" >
<add name="Color" type="System.Drawing.Color"
serializeAs="Binary"/>
.................


In addition, to use CustomClass in Profile, we can just define a custom
class(better to make it as [Serializable]) and deinfe it in profile like;

<add name="MyUnit" readOnly="false" type="CustomProfileClasses.MyUnit"
serializeAs="Binary"/>

=======code for custom class=====
[Serializable]
public class MyUnit
{
public string Name = string.Empty;
public int Count =0;
public bool Enabled = false;
}
===============


Then, we can access the custom class properties in Profile, just as other
buildin type properteis, e.g:

Profile.MyUnit.Name = "name"
Profile.MyUnit.Count = 3


Hope helps. Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| Thread-Topic: getting Membership userid to use and store in a custom
databas
| thread-index: AcXp/zUzrhXhQnO4RrGHcNcjFu+dSg==
| X-WBNR-Posting-Host: 24.73.223.27
| From: "=?Utf-8?B?VGRhclRkYXI=?=" <Tdar@xxxxxxxxxxxxxx>
| References: <E58FF96B-6338-46C8-8F9F-388A6BAF2262@xxxxxxxxxxxxx>
<40eCR904FHA.3936@xxxxxxxxxxxxxxxxxxxxx>
<046814B3-856E-4548-9E84-E23C676D0E0C@xxxxxxxxxxxxx>
<F0207F1B-014F-4D1C-82DE-40006E155E1E@xxxxxxxxxxxxx>
<Q#Y$CMA5FHA.1144@xxxxxxxxxxxxxxxxxxxxx>
<9CCA3901-4DBB-46C6-912E-0E57289558AB@xxxxxxxxxxxxx>
<3UzYg7C5FHA.2880@xxxxxxxxxxxxxxxxxxxxx>
<3B555CBB-EBB9-4509-B4E1-C127C80F1733@xxxxxxxxxxxxx>
<2Fd#GAN5FHA.3908@xxxxxxxxxxxxxxxxxxxxx>
| Subject: RE: getting Membership userid to use and store in a custom
databas
| Date: Tue, 15 Nov 2005 08:11:16 -0800
| Lines: 376
| Message-ID: <6147488E-F1B1-4FB4-B870-FFFAC6F04774@xxxxxxxxxxxxx>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.dotnet.framework.aspnet.webcontrols
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| Path: TK2MSFTNGXA02.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: TK2MSFTNGXA02.phx.gbl
microsoft.public.dotnet.framework.aspnet.webcontrols:31150
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webcontrols
|
| Hello,
| Ok I have been this profile stuff somewhat working,
| however it is not saving the profile info for each user right here is the
| record of the two differnt users from the asp_profile table:
| record 1 shippingtest user
| {AF8020C2-4D36-47EE-B4EE-4D42AE080FD0}
| PreferredBackgroundColor:B:0:187:<Binary> 11/15/2005 3:57:22 PM
| record 2 djp user
|
{8DFE1B7D-2637-4DB8-862C-296F277BA77E}dbman_id_letter:S:0:1:PreferredBackgro
undColor:B:0:187:dbman_user_password:S:1:4: QDP99 <Binary> 11/15/2005
| 3:55:20 PM
|
| the page code is : ( i do use master pages)
|
| Enter your preferred background color:
| <asp:DropDownList ID="ddlColor" runat="server">
| <asp:ListItem>Aqua</asp:ListItem>
| </asp:DropDownList><br />
| <br />
| Enter your dbman email letter(case sensitive):<br />
| <asp:TextBox ID="dbmanletter" runat="server"></asp:TextBox><br />
| <br />
| Enter your dbman sales code:<br />
| <asp:TextBox ID="dbmancode" runat="server"></asp:TextBox><br />
| <br />
| <asp:button id="btnUpdatePreferences" runat="server"
text="Click
| to update your profile" onclick="btnUpdatePreferences_Click" />
| <br />
|
| The code behind is:
|
| Partial Class MyProfile
| Inherits System.Web.UI.Page
|
| Sub btnUpdatePreferences_Click(ByVal sender As Object, ByVal e As
| System.EventArgs)
| 'Profile.PreferredBackgroundColor =
| Color.FromName(ddlColor.SelectedValue)
| Profile.dbman_id_letter = dbmanletter.Text
| Profile.dbman_user_password = dbmancode.Text
| Response.Redirect(Request.Url.LocalPath)
| End Sub
|
| Protected Sub Page_Load(ByVal sender As Object, ByVal e As
| System.EventArgs) Handles Me.Load
| dbmancode.Text = Profile.dbman_user_password
| dbmanletter.Text = Profile.dbman_id_letter
| End Sub
| End Class
|
| I commented out this time because i am not sure yet and have not
researched
| yet how to put system.drawing in a code behind page thus i commented out
| that line
| 'Profile.PreferredBackgroundColor =
Color.FromName(ddlColor.SelectedValue)
|
| for the djp user the stuff works file, but for the other shiptest users
the
| dbman letter and dbman code do not save
|
| I really hope you expand on this prfile area in the future because I dont
| see it being a viable for storeing a customers multiple shipping address
| (unless it is because i have nto played with the seralization yet) and
then
| for creating reports such as mailing list using there address i see there
has
| to be alot of extra work splitting up the fields to pull the data
directly
| from the database for say a crystal report..
|
| Tdar
|
|
|
|
|
|
|
|
|
| "Steven Cheng[MSFT]" wrote:
|
| > Thanks for your response Tdar,
| >
| > As for the profile service, it can be configured to use any different
| > underlying data strorage as long as there is proper provider for it(By
| > default we use Sql data store). And of course we can store mutliple
lists
| > or other class instance or objects in the profile db for each user ,
the
| > requirement is that those class must be serializable (since it'll be
| > serialized before persisted into profile db...).
| >
| > Thanks,
| >
| > Steven Cheng
| > Microsoft Online Support
| >
| > Get Secure! www.microsoft.com/security
| > (This posting is provided "AS IS", with no warranties, and confers no
| > rights.)
| >
| >
| > --------------------
| > | Thread-Topic: getting Membership userid to use and store in a custom
| > databas
| > | thread-index: AcXkbmloXup2uoowQ5Kem787opk45A==
| > | X-WBNR-Posting-Host: 65.35.95.187
| > | From: "=?Utf-8?B?VGRhclRkYXI=?=" <Tdar@xxxxxxxxxxxxxx>
| > | References: <E58FF96B-6338-46C8-8F9F-388A6BAF2262@xxxxxxxxxxxxx>
| > <40eCR904FHA.3936@xxxxxxxxxxxxxxxxxxxxx>
| > <046814B3-856E-4548-9E84-E23C676D0E0C@xxxxxxxxxxxxx>
| > <F0207F1B-014F-4D1C-82DE-40006E155E1E@xxxxxxxxxxxxx>
| > <Q#Y$CMA5FHA.1144@xxxxxxxxxxxxxxxxxxxxx>
| > <9CCA3901-4DBB-46C6-912E-0E57289558AB@xxxxxxxxxxxxx>
| > <3UzYg7C5FHA.2880@xxxxxxxxxxxxxxxxxxxxx>
| > | Subject: RE: getting Membership userid to use and store in a custom
| > databas
| > | Date: Tue, 8 Nov 2005 06:12:11 -0800
| > | Lines: 301
| > | Message-ID: <3B555CBB-EBB9-4509-B4E1-C127C80F1733@xxxxxxxxxxxxx>
| > | MIME-Version: 1.0
| > | Content-Type: text/plain;
| > | charset="Utf-8"
| > | Content-Transfer-Encoding: 7bit
| > | X-Newsreader: Microsoft CDO for Windows 2000
| > | Content-Class: urn:content-classes:message
| > | Importance: normal
| > | Priority: normal
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| > | Newsgroups: microsoft.public.dotnet.framework.aspnet.webcontrols
| > | NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl
| > microsoft.public.dotnet.framework.aspnet.webcontrols:11763
| > | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webcontrols
| > |
| > | Ok cool, was looking at it and only one question I can think of is
say
| > | besides the shipping cart items, can i store more then one many item
| > list,
| > | say one list is shopping cart items and antother for say a list of
items
| > they
| > | are interested in. or even another for list of websites they like. OR
| > | mutliple shipping address, or well etc etc for that user.
| > |
| > | I am going to assume this is yes, because you all are very talented.
| > |
| > |
| > | "Steven Cheng[MSFT]" wrote:
| > |
| > | > Hi Tdar,
| > | >
| > | > As for the ID , it is used internally by the ServiceProvider which
may
| > not
| > | > expose public interfaces for us to query data through that UserKey.
So
| > | > what's the information you want to get through this userkey?
| > | > In your former message, you mentioned that
| > | > ===================
| > | >
| > | > I would like to use the key in a many to one database the (one
being
| > your
| > | > memebership database, many being favorate items for that user) for
| > there
| > | > custom home page. In order to accomplish this I would need the
userid
| > | > (unique key) that i can populate as a relationship between the two
SQL
| > | > tables. And I would need to query for that information in that
table
| > after
| > | > words.
| > | >
| > | > =================
| > | >
| > | > If I understand well, what you'd like to do is something like the
| > Profile
| > | > service in ASP.NET 2.0. The Profile service can help store
personal
| > datas
| > | > (specific to a certain user) so that we can provide some
customizable
| > datas
| > | > for users( can work together with MembershipService...) Have you
tried
| > the
| > | > Profile service to see if it meet your requirement?
| > | >
| > | > Here are some related reference on ASP.NET 2.0's profile service:
| > | >
| > | > #ASP.NET Profile Properties Overview
| > | > http://msdn2.microsoft.com/en-us/library/2y3fs9xs.aspx
| > | >
| > | > #Storing User Profiles
| > | > http://www.asp.net/QUICKSTART/aspnet/doc/profile/default.aspx#schema
| > | >
| > | > #Storing User Information with ASP.NET 2.0 Profiles
| > | >
| >
http://msdn.microsoft.com/library/en-us/dnvs05/html/userprofiles.asp?frame=t
| > | > rue
| > | >
| > | > Hope helps. Thanks,
| > | >
| > | > Steven Cheng
| > | > Microsoft Online Support
| > | >
| > | > Get Secure! www.microsoft.com/security
| > | > (This posting is provided "AS IS", with no warranties, and confers
no
| > | > rights.)
| > | >
| > | >
| > | >
| > | >
| > | >
| > | >
| > | > --------------------
| > | > | Thread-Topic: getting Membership userid to use and store in a
custom
| > | > databas
| > | > | thread-index: AcXkG7DvAqUyrXRVTSWGiRQq1SEVWw==
| > | > | X-WBNR-Posting-Host: 65.35.95.187
| > | > | From: "=?Utf-8?B?VGRhclRkYXI=?=" <Tdar@xxxxxxxxxxxxxx>
| > | > | References: <E58FF96B-6338-46C8-8F9F-388A6BAF2262@xxxxxxxxxxxxx>
| > | > <40eCR904FHA.3936@xxxxxxxxxxxxxxxxxxxxx>
| > | > <046814B3-856E-4548-9E84-E23C676D0E0C@xxxxxxxxxxxxx>
| > | > <F0207F1B-014F-4D1C-82DE-40006E155E1E@xxxxxxxxxxxxx>
| > | > <Q#Y$CMA5FHA.1144@xxxxxxxxxxxxxxxxxxxxx>
| > | > | Subject: RE: getting Membership userid to use and store in a
custom
| > | > databas
| > | > | Date: Mon, 7 Nov 2005 20:20:03 -0800
| > | > | Lines: 184
| > | > | Message-ID: <9CCA3901-4DBB-46C6-912E-0E57289558AB@xxxxxxxxxxxxx>
| > | > | MIME-Version: 1.0
| > | > | Content-Type: text/plain;
| > | > | charset="Utf-8"
| > | > | Content-Transfer-Encoding: 7bit
| > | > | X-Newsreader: Microsoft CDO for Windows 2000
| > | > | Content-Class: urn:content-classes:message
| > | > | Importance: normal
| > | > | Priority: normal
| > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| > | > | Newsgroups: microsoft.public.dotnet.framework.aspnet.webcontrols
| > | > | NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| > | > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > microsoft.public.dotnet.framework.aspnet.webcontrols:11753
| > | > | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.webcontrols
| > | > |
| > | > | I am wondering how i could use that in when configuring the data
| > | > connection.
| > | > | should i just throw the userid in a hidden text box and they use
the
| > | > control
| > | > | function in the configure dataconnection to do a where query on
that
| > user
| > | > id,
| > | > | or is there a better easier way to do that ??
| > | > |
| > | > |
| > | > |
| > | > | "Steven Cheng[MSFT]" wrote:
| > | > |
| > | > | > Hi Tdar,
| > | > | >
| > | > | > Glad that you've fot it working. Also, it's my pleasure to be
of
| > | > | > assistance. If there're any further things we can help, please
feel
| > | > free to
| > | > | > post here.
| > | > | >
| > | > | > Thanks,
| > | > | >
| > | > | > Steven Cheng
| > | > | > Microsoft Online Support
| > | > | >
| > | > | > Get Secure! www.microsoft.com/security
| > | > | > (This posting is provided "AS IS", with no warranties, and
confers
| > no
| > | > | > rights.)
| > | > | >
| > | > | >
| > | > | > --------------------
| > | > | > | Thread-Topic: getting Membership userid to use and store in a
| > custom
| > | > | > databas
| > | > | > | thread-index: AcXjrk2hkYaS5LRoRZWhNEOKedvxLw==
| > | > | > | X-WBNR-Posting-Host: 24.73.223.27
| > | > | > | From: "=?Utf-8?B?VGRhclRkYXI=?=" <Tdar@xxxxxxxxxxxxxx>
| > | > | > | References:
<E58FF96B-6338-46C8-8F9F-388A6BAF2262@xxxxxxxxxxxxx>
| > | > | > <40eCR904FHA.3936@xxxxxxxxxxxxxxxxxxxxx>
| > | > | > <046814B3-856E-4548-9E84-E23C676D0E0C@xxxxxxxxxxxxx>
| > | > | > | Subject: RE: getting Membership userid to use and store in a
| > custom
| > | > | > databas
| > | > | > | Date: Mon, 7 Nov 2005 07:17:01 -0800
| > | > | > | Lines: 109
| > | > | > | Message-ID:
<F0207F1B-014F-4D1C-82DE-40006E155E1E@xxxxxxxxxxxxx>
| > | > | > | MIME-Version: 1.0
| > | > | > | Content-Type: text/plain;
| > | > | > | charset="Utf-8"
| > | > | > | Content-Transfer-Encoding: 7bit
| > | > | > | X-Newsreader: Microsoft CDO for Windows 2000
| > | > | > | Content-Class: urn:content-classes:message
| > | > | > | Importance: normal
| > | > | > | Priority: normal
| > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| > | > | > | Newsgroups:
microsoft.public.dotnet.framework.aspnet.webcontrols
| > | > | > | NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| > | > | > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGXA03.phx.gbl
| > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > | > microsoft.public.dotnet.framework.aspnet.webcontrols:11743
| > | > | > | X-Tomcat-NG:
microsoft.public.dotnet.framework.aspnet.webcontrols
| > | > | > |
| > | > | > | Sorry,
| > | > | > | I accually know how to convert it to VB now
| > | > | > |
| > | > | > | Dim UserInfo as MembershipUser
| > | > | > |
| > | > | > | Finally understand all this :)
| > | > | > |
| > | > | > | Tdar
| > | > | > |
| > | > | > | "TdarTdar" wrote:
| > | > | > |
| > | > | > | > I would like to use the key in a many to one database the
(one
| > | > being
| > | > | > your
| > | > | > | > memebership database, many being favorate items for that
user)
| > for
| > | > | > there
| > | > | > | > custom home page. In order to accomplish this I would need
the
| > | > userid
| > | > | > | > (unique key) that i can populate as a relationship between
the
| > two
| > | > SQL
| > | > | > | > tables. And I would need to query for that information in
that
| > | > table
| > | > | > after
| > | > | > | > words.
| > | > | > | >
| > | > | > | > Tdar
| > | > | > | >
| > | > | > | > "Steven Cheng[MSFT]" wrote:
| > | > | > | >
| > | > | > | > > Hi Tdar,
| > | > | > | > >
| > | > | > | > > Welcome to ASPNET newsgroup.
| > | > | > | > > Regarding on the getting Membership userid question, do
you
| > mean
| > | > how
| > | > | > to
| > | > | > | > > access the underlying MembershipUser's identity
value(primary
| > | > key)?
| > | > | > Based
| > | > | > | > > on my understanding, we can get the MembershipUser's
| > underlying
| > | > | > database
| > | > | > | > > identity through the following code:
| > | > | > | > >
| > | > | > | > > ================
| > | > | > | > > protected void Page_Load(object sender, EventArgs e)
| > | > | > | > > {
| > | > | > | > > MembershipUser user = Membership.GetUser();
| > | > | > | > >
| > | > | > | > > Response.Write("<br>Username: " + user.UserName);
| > | > | > | > > Response.Write("<br>:LastLoginDate " +
| > | > user.LastLoginDate);
| > | > | > | > > Response.Write("<br>ProviderUserKey: " +
| > | > | > | > > user.ProviderUserKey.ToString());
| > | > | > | > > }
| > | > | > | > > ================
| > | > | > | > >
| > | > | > | > > the above code help display the current login user's
| > | > ProviderUserKey.
| > | > | >
| > | > | > | > > However, the "ProviderUserKey contains the underlying
user
| > key
| > | > | > identity
| > | > | > | > > which is provider specific(generally it should be
transparent
| > to
| > | > | > | > > developers...). So we do not recommend that we directly
use
| > it in
| > | > our
| > | > | > | > > asp.net web application. Also, for FormsAuthentication,
the
| > | > | > authentication
| > | > | > | > > ticket is cookie based, and I think the authentication
| > ticket
| > | > only
| > | > | > | > > contains username as the identity rather than the
underlying
| > | > UserKey.
| > | > | > | > > Is there any particular scenario in your application that
you
| > | > need to
| > | > | > use
| > | > | > | > > the underlying Provider specific UserKey value? Please
feel
|

.