다음을 통해 공유


ASP.NET AJAX에서 프로필 정보 사용

업데이트: 2007년 11월

ASP.NET 프로필 웹 서비스를 사용하면 응용 프로그램에서 ASP.NET 프로필 응용 프로그램 서비스를 사용할 수 있습니다. 이 항목에서는 ECMAScript(JavaScript) 코드를 사용하여 브라우저에서 응용 프로그램 프로필 서비스를 호출하는 방법을 보여 줍니다.

프로필 정보를 사용하려면 사용자가 먼저 웹 사이트에서 프로필 서비스를 설정해야 합니다. 이렇게 해야 프로필 서비스를 웹 서비스로 사용할 수 있습니다. 프로필 웹 서비스가 설정되면 클라이언트 스크립트 Sys.Services.ProfileService 클래스의 메서드를 호출하여 해당 웹 서비스를 호출할 수 있습니다.

프로필 서비스 활성화

스크립트에서 프로필 서비스를 사용하려면 응용 프로그램의 Web.config 파일에서 다음 요소를 사용하여 프로필 서비스를 활성화해야 합니다.

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

기본적으로 어떤 프로필 속성도 사용할 수 없습니다. 클라이언트 응용 프로그램에서 사용할 수 있게 하려는 각 프로필 속성에 대해 profileService 요소의 readAccessProperties 특성에 속성 이름을 추가합니다. 이와 유사하게 클라이언트 응용 프로그램에서 보낸 데이터를 기반으로 설정할 수 있는 각 서버 프로필 속성에 대해 writeAccessProperties 특성에 속성 이름을 추가합니다. 다음 예제에서는 개별 속성을 노출하고 클라이언트 응용 프로그램에서 해당 속성을 읽고 쓸 수 있는지 여부를 설정하는 방법을 보여 줍니다.

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

다음 예제와 같은 구문을 사용하여 profile 섹션에서 프로필 속성을 정의합니다. 그룹화된 속성의 경우 group 요소를 사용합니다.

<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>

자세한 내용은 방법: ASP.NET AJAX에서 ASP.NET 서비스 구성을를 참조하십시오.

예제

다음 예제에서는 클라이언트 스크립트의 프로필 서비스를 사용하는 방법을 보여 줍니다. 이 예제는 ScriptManager 컨트롤을 포함하는 ASP.NET 웹 페이지로 구성되어 있습니다. 이 컨트롤이 페이지에 포함되어 있으면 페이지의 모든 클라이언트 스크립트에서 자동으로 Sys.Services.AuthenticationService 개체를 사용할 수 있습니다.

페이지에는 이름이 OnClickLogin인 관련 이벤트 처리기가 있는 로그인 단추가 있습니다. 메서드의 코드에서 AuthenticationService 개체의 login 메서드를 호출합니다.

로그인한 후 Sys.Services.ProfileService 개체의 load 메서드를 호출하여 현재 사용자에 대한 프로필을 로드하는 loginComplete 콜백 함수가 호출됩니다.

프로필 정보는 사용자가 로그인한 후 설정할 수 있는 배경색 및 전경색으로 구성되어 있습니다. 배경색 및 전경색은 사용자가 Web.config 파일에서 설정해야 하는 프로필 속성입니다. 이러한 속성을 정의하려면 다음 요소를 응용 프로그램의 Web.config 파일에 추가합니다.

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

예제 코드에서는 로드 및 저장 메서드에 대한 완료된 비동기 콜백 함수를 제공합니다. 또한 로드 및 저장 메서드에 대해 실패한 콜백 함수를 추가할 수 있습니다.

참고:

예제를 실행하기 전에 응용 프로그램의 멤버 자격 데이터베이스에 정의된 사용자가 한 명 이상인지 확인하십시오. 기본 SQL Server Express Edition 데이터베이스에서 사용자를 만드는 방법에 대한 자세한 내용은 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>

참고 항목

작업

방법: ASP.NET AJAX에서 ASP.NET 서비스 구성

개념

ASP.NET AJAX의 웹 서비스 사용

클라이언트 스크립트에서 웹 서비스 호출

ASP.NET AJAX에서 폼 인증 사용

Sys.Services.AuthenticationService 클래스

Sys.Services.ProfileService 클래스