Implementando um provedor perfil

O recurso de perfil do ASP.NET permite que você facilmente utilize diferentes provedores.Você pode usar a classe SqlProfileProvider que é incluída com o .NET Framework ou você pode implementar seu próprio provedor.

Você cria um provedor de perfil personalizado quando:

  • Você precisa armazenar as informações de perfil em uma fonte de dados, como em um banco de dados FoxPro ou banco de dados Oracle, que não é suportada pelos provedores de perfil incluídos no .NET Framework.

  • Você precisará gerenciar informações de perfil usando um esquema de banco de dados que seja diferente do esquema do banco de dados usado pelos provedores incluídos com o .NET Framework.Um exemplo comum é que você deseja integrar informações de perfil com dados do usuário em um banco de dados SQL Server existente.

Classes Necessárias

Para implementar um provedor de perfil, crie uma classe que herda a classe abstrata System.Web.Profile.ProfileProvider.A classe abstrata ProfileProvider herda, por sua vez, a classe abstrata System.Configuration.SettingsProvider, que herda a classe abstrata System.Configuration.Provider.ProviderBase.Devido esta cadeia de herança, em adição aos membros necessárias da classe ProfileProvider, você deve implementar os membros necessários das classes SettingsProvider e ProviderBase.

As tabelas a seguir descrevem as propriedades e métodos que você deve implementar das classes abstratas ProviderBase, SettingsProvider e ProfileProvider.Para revisar uma implementação de cada membro, consulte o Como: Compilar e executar o exemplo de provedor de analisar.

Membros ProviderBase

Membro

Descrição

Método Initialize

Leva como entrada o nome da instância do provedor e uma NameValueCollection de definições de configuração.Utilizado para definir opções e valores de propriedade para o provedor de instância incluindo valores específicos da implementação e opções especificadas no arquivo de configuração de máquina ou arquivo Web.config.

Membros SettingsProvider

Membro

Descrição

Propriedade ApplicationName

O nome do aplicativo que é armazenada com cada perfil.O provedor de perfil usa o nome do aplicativo para armazenar informações de perfil separadamente para cada aplicativo.Isso permite que vários aplicativos ASP.NET usem a mesmo fonte de dados sem um conflito se o mesmo nome de usuário for criado em diferentes aplicativos.Como alternativa, vários aplicativos ASP.NET podem compartilhar um fonte de dados de perfil, especificando o mesmo nome do aplicativo.

Método GetPropertyValues

Leva um SettingsContext e um objeto SettingsPropertyCollection como entrada.

O SettingsContext fornece informações sobre o usuário.Você pode usar as informações como uma chave primária para recuperar informações de propriedades de perfil para o usuário.Use o objeto SettingsContext para obter o nome de usuário e se o usuário é autenticado ou anônimo.

O SettingsPropertyCollection contém uma coleção de objetos SettingsProperty.Cada objeto SettingsProperty fornece o nome e tipo da propriedade, bem como informações adicionais como o valor padrão para a propriedade e se a propriedade é somente leitura.O método GetPropertyValues preenche um SettingsPropertyValueCollection com objetos SettingsPropertyValue baseados nos objetos SettingsProperty fornecidos como entrada.Os valores da fonte de dados para o usuário especificado são atribuídos às propriedades PropertyValue de cada objeto SettingsPropertyValue e toda a coleção é retornada.

Chamar o método também atualiza o valor LastActivityDate para o perfil de usuário especificada para a data e hora atuais.

Método SetPropertyValues

Leva um SettingsContext e um objeto SettingsPropertyValueCollection como entrada.

O SettingsContext fornece informações sobre o usuário.Você pode usar as informações como uma chave primária para recuperar informações de propriedades de perfil para o usuário.Use o objeto SettingsContext para obter o nome de usuário e se o usuário é autenticado ou anônimo.

O SettingsPropertyValueCollection contém uma coleção de objetos SettingsPropertyValue.Cada objeto SettingsPropertyValue fornece o nome, tipo e valor da propriedade, bem como informações adicionais como o valor padrão para a propriedade e se a propriedade é somente leitura.O método SetPropertyValues atualiza os valores de propriedade de perfil na fonte de dados para o usuário especificado.

Chamar o método também atualiza os valores LastActivityDate e LastUpdatedDate para o perfil de usuário especificada para a data e hora atuais.

Membros ProfileProvider

Membro

Descrição

Método DeleteProfiles

Utiliza como entrada um matriz de sequências de nomes de usuário e exclui da fonte de dados todas as informações de perfil e valores de propriedade para os nomes especificados em que o nome do aplicativo corresponde ao valor de propriedade ApplicationName.

Se sua fonte de dados suportar transações, é recomendável que você inclua todas as operações de exclusão em uma transação e que você reverter a transação e acione uma exceção se qualquer operação de exclusão falhar.

Método DeleteProfiles

Utiliza como entrada um conjunto de objetos ProfileInfo e exclui da fonte de dados todas as informações de perfil e valores de propriedade para cada perfil em que o nome do aplicativo corresponde ao valor de propriedade ApplicationName.

Se sua fonte de dados suportar transações, é recomendável que você inclua todas as operações de exclusão em uma transação e reverta a transação e acione uma exceção se qualquer operação de exclusão falhar.

Método DeleteInactiveProfiles

Utiliza como entrada um valor ProfileAuthenticationOption e um objeto DateTime e exclui a partir de fonte de dados todos as informações de perfil e valores de propriedade onde a data da última da atividade é menor ou igual a data e hora especificada e onde o nome do aplicativo corresponde ao valor de propriedade ApplicationName.O parâmetro ProfileAuthenticationOption especifica se somente perfis anônimos, apenas perfis autenticados, ou todos os perfis serão excluídos.

Se sua fonte de dados suportar transações, é recomendável que você inclua todas as operações de exclusão em uma transação e reverta a transação e acione uma exceção se qualquer operação de exclusão falhar.

Método GetAllProfiles

Leva como entrada um valor ProfileAuthenticationOption, um número inteiro que especifica o índice de página, um número inteiro que especifica o tamanho da página e uma referência a um número inteiro que será definida como a contagem total de perfis.Retorna um ProfileInfoCollection contendo objetos ProfileInfo de todos os perfis na fonte de dados em que o nome do aplicativo corresponde ao valor de propriedade ApplicationName.O parâmetro ProfileAuthenticationOption especifica se somente perfis anônimos, apenas perfis autenticados, ou todos os perfis serão retornados.

Os resultados retornados pelo método GetAllProfiles são restritos pelos valores de índice da página e de tamanho de página.O valor tamanho de página especifica o número máximo de objetos ProfileInfo para retornar no ProfileInfoCollection.O valor de índice da página especifica de qual página de resultados retornar, onde 1 identifica a primeira página.O parâmetro de total de registros é um parâmetro de saída (você pode usar ByRef no Visual Basic) que está definido como o número total de perfis.Por exemplo, se o armazenamento de dados contém 13 perfis para o aplicativo e o valor de índice da página for 6 com um tamanho de página de 5, o ProfileInfoCollection retornado contém os perfis sexto até o décimo.O valor total de registros é definido como 13 quando o método retorna.

Método GetAllInactiveProfiles

Leva como entrada um valor ProfileAuthenticationOption, um objeto DateTime, um número inteiro que especifica o índice de página, um número inteiro que especifica o tamanho da página e uma referência a um número inteiro que será definida como a contagem total de perfis.Retorna um ProfileInfoCollection que contém objetos ProfileInfo de todos os perfis na fonte de dados onde a data da última da atividade é menor ou igual ao DateTime especificada e onde o nome do aplicativo corresponde ao valor de propriedade ApplicationName.O parâmetro ProfileAuthenticationOption especifica se somente perfis anônimos, apenas perfis autenticados, ou todos os perfis serão retornados.

Os resultados retornados pelo método GetAllInactiveProfiles são restritos pelos valores de índice da página e de tamanho de página.O valor tamanho de página especifica o número máximo de objetos ProfileInfo para retornar no ProfileInfoCollection.O valor de índice da página especifica de qual página de resultados retornar, onde 1 identifica a primeira página.O parâmetro de total de registros é um parâmetro de saída (você pode usar ByRef no Visual Basic) que está definido como o número total de perfis.Por exemplo, se o armazenamento de dados contém 13 perfis para o aplicativo e o valor de índice da página for 2 com um tamanho de página de 5, o ProfileInfoCollection retornado contém os perfis sexto até o décimo.O valor total de registros é definido como 13 quando o método retorna.

Método FindProfilesByUserName

Utiliza como entrada um valor ProfileAuthenticationOption, uma sequência de caracteres contendo um nome de usuário, um número inteiro que especifica o índice de página, um número inteiro que especifica o tamanho da página e uma referência a um número inteiro que será definida como a contagem total de perfis.Retorna um ProfileInfoCollection contendo objetos ProfileInfo de todos os perfis na fonte de dados em que o nome de usuário corresponde ao nome de usuário especificado e onde o nome de aplicativo corresponde ao valor de propriedade ApplicationName.O parâmetro ProfileAuthenticationOption especifica se somente perfis anônimos, apenas perfis autenticados, ou todos os perfis serão retornados.

Se sua fonte de dados suportar recursos adicionais de pesquisa, como caracteres curinga, você pode fornecer recursos de pesquisa mais abrangentes para nomes de usuário.

Os resultados retornados pelo método FindProfilesByUserName são restritos pelos valores de índice da página e de tamanho de página.O valor tamanho de página especifica o número máximo de objetos ProfileInfo para retornar no ProfileInfoCollection.O valor de índice da página especifica de qual página de resultados retornar, onde 1 identifica a primeira página.O parâmetro de total de registros é um parâmetro de saída (você pode usar ByRef no Visual Basic) que está definido como o número total de perfis.Por exemplo, se o armazenamento de dados contém 13 perfis para o aplicativo e o valor de índice da página for 2 com um tamanho de página de 5, o ProfileInfoCollection retornado contém os perfis sexto até o décimo.O valor total de registros é definido como 13 quando o método retorna.

Método FindInactiveProfilesByUserName

Utiliza como entrada um valor ProfileAuthenticationOption, uma sequência de caracteres contendo um nome de usuário, um objeto DateTime, um número inteiro que especifica o índice de página, um número inteiro que especifica o tamanho da página e uma referência a um número inteiro que será definida como a contagem total de perfis.Retorna um ProfileInfoCollection que contém objetos ProfileInfo de todos os perfis na fonte de dados onde o nome de usuário corresponde ao nome de usuário especificado, onde a data da última atividade é menor ou igual ao DateTime especificada e onde o nome do aplicativo corresponde ao valor de propriedade ApplicationName.O parâmetro ProfileAuthenticationOption especifica se somente perfis anônimos, apenas perfis autenticados, ou todos os perfis serão retornados.

Se sua fonte de dados suportar recursos adicionais de pesquisa, como caracteres curinga, você pode fornecer recursos de pesquisa mais abrangentes para nomes de usuário.

Os resultados retornados pelo método FindInactiveProfilesByUserName são restritos pelos valores de índice da página e de tamanho de página.O valor tamanho de página especifica o número máximo de objetos ProfileInfo para retornar no ProfileInfoCollection.O valor de índice da página especifica de qual página de resultados retornar, onde 1 identifica a primeira página.O parâmetro de total de registros é um parâmetro de saída (você pode usar ByRef no Visual Basic) que está definido como o número total de perfis.Por exemplo, se o armazenamento de dados contém 13 perfis para o aplicativo e o valor de índice da página for 2 com um tamanho de página de 5, o ProfileInfoCollection retornado contém os perfis sexto até o décimo.O valor total de registros é definido como 13 quando o método retorna.

Método GetNumberOfInactiveProfiles

Toma como entrada um valor ProfileAuthenticationOption e um objeto DateTime e retorna uma contagem de todos os perfis na fonte de dados onde a data da última atividade é menor ou igual ao DateTime especificada e onde o nome do aplicativo corresponde ao valor de propriedade ApplicationName.O parâmetro ProfileAuthenticationOption especifica se somente perfis anônimos, apenas perfis autenticados, ou todos os perfis serão contados.

Nome do Aplicativo

Como provedores de perfil armazenam informações do perfil separadamente para cada aplicativo, você deve garantir que o esquema de dados inclua o nome do aplicativo e que as consultas e atualizações também incluam o nome do aplicativo.Por exemplo, o comando a seguir é usado para recuperar um valor da propriedade de um banco de dados com base no nome de usuário e se o perfil é anônimo e garante que o valor ApplicationName esteja incluído na consulta.

SELECT Property FROM PropertyTable 
  WHERE Username = 'user1' AND IsAnonymous = False 
  AND ApplicationName = 'MyApplication'

Consulte também

Tarefas

Como: Compilar e executar o exemplo de provedor de analisar

Conceitos

Visão geral sobre propriedades de perfil do ASP.NET

Provedores de perfil ASP.NET