# How to: Enable Profiles in Open Ria Services

\[ **This document was written for WCF Services Version 1 Service Pack 2 and might not be up to date** \
&#x20;Please see [Release Notes](https://github.com/OpenRIAServices/OpenRiaServices/releases) or [Changelog](https://github.com/OpenRIAServices/OpenRiaServices/blob/main/Changelog.md) for a list of changes since WCF RIA Services ]

This topic demonstrates how to enable profiles in your Open Ria Services solution if you have previously enabled authentication. Using profiles, you can retrieve and save properties for a user. Profiles in Open Ria Services build upon the profiles framework in ASP.NET. For more information about ASP.NET profiles, see [ASP.NET Profile Properties Overview](http://go.microsoft.com/fwlink/?linkid=168739).

You can retrieve or save user profile properties only after the user has been authenticated. To configure the server and client projects for authentication, see [How to: Enable Authentication in Open Ria Services](/openriaservices/ee707361/ee707353.md).

### To configure the server project

1. In the server project, open the Web.config file.
2. In the \ section, add a \ element.
3. In the \ element, add profile properties.

   The following example shows how to enable a profile and define a property named FriendlyName.

   ```
   <system.web>
     <authentication mode="Forms"></authentication>
     <profile enabled="true">
       <properties>
         <add name="FriendlyName"/>
       </properties>
     </profile>
   </system.web>
   ```
4. Open the file that contains the User class for the authentication service.
5. In the User class, add all of the profile properties that you added to the Web.config file.

   The following example shows how to add a property named FriendlyName that matches the property added to the Web.config file.

   ```
   Partial Public Class User
       Inherits UserBase

       Private _FriendlyName As String

       <DataMember()> _
       Public Property FriendlyName() As String
           Get
               Return _FriendlyName
           End Get
           Set(ByVal value As String)
               _FriendlyName = value
           End Set
       End Property
   End Class
   ```

   ```csharp
   public partial class User : UserBase
   {

       [DataMember]
       public string FriendlyName { get; set; }
   }
   ```

### To access profile properties from the client project

1. In the Silverlight client project, open a code-behind page.
2. In the code-behind page, set or retrieve profile properties on the User object of the current instance of WebContext.

   The following example shows how to set a profile property in a code-behind file.

   ```
   WebContext.Current.User.FriendlyName = "Mike"
   ```

   ```csharp
   WebContext.Current.User.FriendlyName = "Mike";
   ```
3. If you want to make the WebContext object available in XAML, add the current WebContext instance to the application resources in the Application.Startup event before creating the root visual.

   The following example shows how to add the WebContext instance as an application resource.

   ```
   Private Sub Application_Startup(ByVal o As Object, ByVal e As StartupEventArgs) Handles Me.Startup
       Me.Resources.Add("WebContext", WebContext.Current)
       Me.RootVisual = New MainPage()
   End Sub
   ```

   ```csharp
   private void Application_Startup(object sender, StartupEventArgs e)
   {
       this.Resources.Add("WebContext", WebContext.Current);
       this.RootVisual = new MainPage();
   }
   ```

   Using declarative syntax, you can retrieve the profile property. The following example shows how to retrieve a profile property in XAML.

   ```
   <TextBlock Text={Binding Source={StaticResource WebContext}, Path=User.FriendlyName}"/>
   ```

## See Also

#### Tasks

[Walkthrough: Using Authentication Service with Silverlight Navigation Application](/openriaservices/ee707361/ee942451.md)

[Walkthrough: Using Authentication Service with Silverlight Business Application](/openriaservices/ee707361/ee942449.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://openriaservices.gitbook.io/openriaservices/ee707361/ee707350.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
