Freigeben über


Verwenden von Profilinformationen mit ASP.NET-AJAX

Aktualisiert: November 2007

Der ASP.NET-Profilwebdienst ermöglicht die Verwendung des ASP.NET-Profilanwendungsdiensts in -Anwendungen. In diesem Thema wird erläutert, wie der Anwendungsprofildienst mithilfe von ECMAScript (JavaScript) aus dem Browser aufgerufen wird.

Für die Verwendung von Profilinformationen muss zunächst der Profildienst auf der Website aktiviert werden. Dadurch wird dieser als Webdienst verfügbar. Wenn der Profilwebdienst aktiviert wird, können Sie diesen durch Aufruf von Methoden der Sys.Services.ProfileService-Klasse des Clientskripts aufrufen.

Aktivieren des Profildiensts

Zur Verwendung des Profildiensts aus dem Skript müssen Sie den Profildienst aktivieren, indem Sie das folgende Element in der Datei Web.config der Anwendung verwenden.

<system.web.extensions>
  <scripting>
    <webServices
      < profileService enabled="true" />
    </webServices
  </scripting>
</system.web.extensions>

Standardmäßig sind keine Profileigenschaften verfügbar. Für jede Profileigenschaft, die Sie in einer Clientanwendung verfügbar machen möchten, fügen Sie dem readAccessProperties-Attribut des profileService-Elements den Eigenschaftennamen hinzu. Fügen Sie entsprechend dazu jeder Serverprofileigenschaft, die auf Grundlage von aus der Clientanwendung gesendeten Daten festgelegt werden kann, den Eigenschaftennamen des writeAccessProperties-Attributs hinzu. Im folgenden Beispiel wird gezeigt, wie einzelne Eigenschaften verfügbar gemacht und die zugehörigen Lese-/Schreibberechtigungen für Clientanwendungen festgelegt werden.

<profileService enabled="true" 
  readAccessProperties="Backgroundcolor,Foregroundcolor" 
  writeAccessProperties=" Backgroundcolor,Foregroundcolor"/>

Die Profileigenschaften werden im Abschnitt profile unter Verwendung von Syntax wie der folgenden festgelegt. Verwenden Sie für gruppierte Eigenschaften das group-Element.

<system.web>
  <profile enabled="true">
    <add name=" Backgroundcolor" type="System.String"
       defaultValue="white" />
    <add name=" Foregroundcolor" type="System.String"
     defaultValue="black" />
    <properties>
      <group name="Address">
       <add name="Street" type="System.String" />
       <add name="City" type="System.String"/>
       <add name="PostalCode" type="System.String" />
      </group>
    </properties>
  </profile>
</system.web>

Weitere Informationen hierzu finden Sie unter Gewusst wie: Konfigurieren von ASP.NET-Diensten in ASP.NET AJAX.

Beispiel

Das folgende Beispiel zeigt, wie der Profildienst vom Clientskript verwendet wird. Das Beispiel besteht aus einer ASP.NET-Webseite, die ein ScriptManager-Steuerelement enthält. Wenn dieses Steuerelement auf der Seite enthalten ist, steht das Sys.Services.AuthenticationService-Objekt automatisch für jedes Clientskript in der Seite zur Verfügung.

Die Seite enthält eine Anmeldeschaltfläche mit einem zugeordneten Ereignishandler mit dem Namen OnClickLogin. Code in der Methode ruft die login-Methode des AuthenticationService-Objekts auf.

Nachdem Sie sich angemeldet haben, wird die loginComplete-Rückruffunktion aufgerufen, die die load-Methode des Sys.Services.ProfileService-Objekts zum Laden des Profils des aktuellen Benutzers aufruft.

Die Profilinformationen bestehen aus den Farben für Vorder- und Hintergrund, die nach der Anmeldung festgelegt werden können. Bei den Farben für Vorder- und Hintergrund handelt es sich um Profileigenschaften, die in der Datei Web.config festgelegt werden müssen. Zum Festlegen dieser Eigenschaften fügen Sie die folgenden Elemente zur Datei Web.config der Anwendung hinzu:

<profile enabled="true">
  <properties>
    <add name="Backgroundcolor" type="System.String"
       defaultValue="white"/>
    <add name="Foregroundcolor" type="System.String"
       defaultValue="black"/>
  </properties>
</profile>

Der Beispielcode enthält asynchrone abgeschlossene Rückruffunktionen für die Methoden zum Laden und Speichern. Sie können auch fehlgeschlagene Rückruffunktionen für die Methoden zum Laden und Speichern hinzufügen.

Hinweis:

Stellen Sie vor Ausführen des Beispiels sicher, dass in der Mitgliedschaftsdatenbank der Anwendung mindestens ein Benutzer definiert ist. Informationen zum Erstellen eines Benutzers in der Standarddatenbank von SQL Server Express Edition finden Sie unter Verwenden der Formularauthentifizierung mit ASP.NET-AJAX.

var setProfileProps;

function pageLoad()
{
    var userLoggedIn = 
        Sys.Services.AuthenticationService.get_isLoggedIn();
        // alert(userLoggedIn);
        
    profProperties = $get("setProfileProps");
    passwordEntry = $get("PwdId");
    
    if (userLoggedIn == true)
    {
        LoadProfile();
        GetElementById("setProfProps").style.visibility = "visible";
        GetElementById("logoutId").style.visibility = "visible";
    }
    else
    {
        DisplayInformation("User is not authenticated.");
    }
     
}


// The OnClickLogout function is called when 
// the user clicks the Logout button. 
// It logs out the current authenticated user.
function OnClickLogout()
{
    Sys.Services.AuthenticationService.logout(
        null, OnLogoutComplete, AuthenticationFailedCallback,null);
}


function OnLogoutComplete(result, 
    userContext, methodName)
{
    // Code that performs logout 
    // housekeeping goes here.          
}       



// This is the callback function called 
// if the authentication failed.
function AuthenticationFailedCallback(error_object, 
    userContext, methodName)
{   
    DisplayInformation("Authentication failed with this error: " +
        error_object.get_message());
}



// Loads the profile of the current
// authenticated user.
function LoadProfile()
{
    Sys.Services.ProfileService.load(null, 
        LoadCompletedCallback, ProfileFailedCallback, null);

}

// Saves the new profile
// information entered by the user.
function SaveProfile()
{
    
    // Set background color.
    Sys.Services.ProfileService.properties.Backgroundcolor = 
        GetElementById("bgcolor").value;
    
    // Set foreground color.
    Sys.Services.ProfileService.properties.Foregroundcolor =
        GetElementById("fgcolor").value; 
    
    // Save profile information.
    Sys.Services.ProfileService.save(null, 
        SaveCompletedCallback, ProfileFailedCallback, null);
    
}

// Reads the profile information and displays it.
function LoadCompletedCallback(numProperties, userContext, methodName)
{
    document.bgColor = 
        Sys.Services.ProfileService.properties.Backgroundcolor;

    document.fgColor =   
        Sys.Services.ProfileService.properties.Foregroundcolor;         
}

// This is the callback function called 
// if the profile was saved successfully.
function SaveCompletedCallback(numProperties, userContext, methodName)
{
    LoadProfile();
    // Hide the area that contains 
    // the controls to set the profile properties.
    SetProfileControlsVisibility("hidden");
}

// This is the callback function called 
// if the profile load or save operations failed.
function ProfileFailedCallback(error_object, userContext, methodName)
{
    alert("Profile service failed with message: " + 
            error_object.get_message());
}


// Utility functions.

// This function sets the visibilty for the
// area containing the page elements for settings
// profiles.
function SetProfileControlsVisibility(currentVisibility)
{
   profProperties.style.visibility = currentVisibility; 
}

// Utility function to display user's information.
function DisplayInformation(text)
{
    document.getElementById('placeHolder').innerHTML += 
    "<br/>"+ text;
}


function GetElementById(elementId)
{
    var element = document.getElementById(elementId);
    return element;
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

<%@ Page Language="VB" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" >

    <title>Using Profile Service</title>
   <style type="text/css">
        body {  font: 11pt Trebuchet MS;
                padding-top: 72px;
                text-align: center }

        .text { font: 8pt Trebuchet MS }
    </style>

</head>
<body>

    <form id="form1" >
    
        <asp:ScriptManager  ID="ScriptManagerId">
            <Scripts>
                <asp:ScriptReference Path="Profile.js" />
            </Scripts>
        </asp:ScriptManager>


        <h2>Profile Service</h2>
    
        <p>
            You must log in first to set or get profile data. 
            Create a new user, if needed. <br /> Refer to the Authentication example.
        </p>
         
        <div id="loginId" style="visibility:visible">
            <table id="loginForm">
                <tr>
                    <td>User Name: </td>
                    <td><input type="text" 
                        id="userId" name="userId" value=""/></td>
                </tr>
                
                <tr>
                    <td>Password: </td>
                    <td><input type="password" 
                        id="userPwd" name="userPwd" value="" /></td>
                </tr>
                
                <tr>
                    <td><input type="button" 
                        id="login" name="login" value="Login" 
                            onclick="OnClickLogin()" /></td>
                </tr>
            </table>              
    
        </div>
        
        <div id="setProfProps" style="visibility:hidden">
            <input type="button" 
            value="Set Profile Properties" 
            onclick="SetProfileControlsVisibility('visible')"/> 
        </div>
        
        <div id="placeHolder" style="visibility:visible" />
        
        <br />
        
        
        <input id="logoutId" type="button" 
            value="Logout"  style="visibility:hidden"
        onclick="OnClickLogout()" />
        
    
        <div id="setProfileProps" style="visibility:hidden">
            <table>
                <tr>
                    <td>Foreground Color</td>
                    <td><input type="text" id="fgcolor" 
                    name="fgcolor" value=""/></td>
                </tr>
                
                <tr>
                    <td>Background Color</td>
                    <td><input type="text" id="bgcolor" 
                        name="bgcolor" value="" /></td>
                </tr>
                
                <tr>
                    <td><input type="button" 
                    id="saveProf" name="saveProf" 
                    value="Save Profile Properties" 
                    onclick="SaveProfile();" /></td>
                </tr>
            </table>      
        </div>        
    
    </form>

</body>

</html>
<%@ Page Language="C#" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head >

    <title>Using Profile Service</title>
   <style type="text/css">
        body {  font: 11pt Trebuchet MS;
                padding-top: 72px;
                text-align: center }

        .text { font: 8pt Trebuchet MS }
    </style>

</head>
<body>

    <form id="form1" >
    
        <asp:ScriptManager  ID="ScriptManagerId">
            <Scripts>
                <asp:ScriptReference Path="Profile.js" />
            </Scripts>
        </asp:ScriptManager>


        <h2>Profile Service</h2>
    
        <p>
            You must log in first to set or get profile data. 
            Create a new user, if needed. <br /> 
        </p>
         
        <div id="setProfProps" style="visibility:visible">
            <input type="button" 
            value="Set Profile Properties" 
            onclick="SetProfileControlsVisibility('visible')"/> 
        </div>
        
        <div id="placeHolder" style="visibility:visible" />
        
        <br />
        
        
        <input id="logoutId" type="button" 
            value="Logout"  style="visibility:hidden"
        onclick="OnClickLogout()" />
        
    
        <div id="setProfileProps" style="visibility:hidden">
            <table>
                <tr>
                    <td>Foreground Color</td>
                    <td><input type="text" id="fgcolor" 
                    name="fgcolor" value=""/></td>
                </tr>
                
                <tr>
                    <td>Background Color</td>
                    <td><input type="text" id="bgcolor" 
                        name="bgcolor" value="" /></td>
                </tr>
                
                <tr>
                    <td><input type="button" 
                    id="saveProf" name="saveProf" 
                    value="Save Profile Properties" 
                    onclick="SaveProfile();" /></td>
                </tr>
            </table>      
        </div>        
    
    </form>

</body>

</html>

Siehe auch

Aufgaben

Gewusst wie: Konfigurieren von ASP.NET-Diensten in ASP.NET AJAX

Konzepte

Verwenden von Webdiensten in ASP.NET-AJAX

Aufrufen von Webdiensten vom Clientskript

Verwenden der Formularauthentifizierung mit ASP.NET-AJAX

Sys.Services.AuthenticationService-Klasse

Sys.Services.ProfileService-Klasse