Pergunta

Eu não consigo descobrir como usar o método Profile.GetProfile() em uma classe biblioteca. Eu tentei usar esse método em um Page.aspx.cs e ele funcionou perfeitamente.

Como posso fazer um método que funciona nas page.aspx.cs, trabalho na biblioteca de classes.

Foi útil?

Solução

Em ASP.NET, perfil é um gancho para o HttpContext.Current.Profile propriedade, que retorna um objeto gerado dinamicamente do tipo ProfileCommon, derivado de System.Web.Profile.ProfileBase .

ProfileCommon aparentemente inclui um método GetProfile (string username), mas você não vai encontrá-lo oficialmente documentados na MSDN (e ele não vai aparecer no intellisense no visual studio), porque a maioria da classe ProfileCommon é gerado dinamicamente quando o aplicativo ASP.NET é compilado (A lista exata de propriedades e métodos vai depender de como 'perfis' está configurado no seu web.config). GetProfile () não receber uma menção neste MSDN página , por isso parece ser real.

Talvez em sua classe de biblioteca, o problema é que a informação de configuração de web.config não está a ser apanhada. É a sua parte classe biblioteca de um Solultion que inclui uma aplicação web, ou você está apenas trabalhando na biblioteca em isolamento?

Outras dicas

Já tentei adicionar referência a System.Web.dll à sua biblioteca de classe e, em seguida:

if (HttpContext.Current == null) 
{
    throw new Exception("HttpContext was not defined");
}
var profile = HttpContext.Current.Profile;
// Do something with the profile

Você pode usar ProfileBase, mas você perde tipo de segurança. Você pode atenuar que, com fundição cuidado e tratamento de erros.

    string user = "Steve"; // The username you are trying to get the profile for.
    bool isAuthenticated = false;

        MembershipUser mu = Membership.GetUser(user);

        if (mu != null)
        {
            // User exists - Try to load profile 

            ProfileBase pb = ProfileBase.Create(user, isAuthenticated);

            if (pb != null)
            {
                // Profile loaded - Try to access profile data element.
                // ProfileBase stores data as objects in a Dictionary 
                // so you have to cast and check that the cast succeeds.

                string myData = (string)pb["MyKey"];

                if (!string.IsNullOrWhiteSpace(myData))            
                {
                    // Woo-hoo - We're in data city, baby!
                    Console.WriteLine("Is this your card? " + myData);
                }
            }        
        }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top