Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

RicardoGaio

Resgatar o utilizador online e mostrar numa label

Mensagens Recomendadas

RicardoGaio

Viva!

A minha duvida neste momento prende-se com o facto de saber como "apanhar" o nome de utilizador que está online e mostrá-lo numa label inserida na masterpage.

Estou num domínio e estou a usar asp.net com VB.

Se criar uma página "avulso", funciona bem:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Testemostrauser.aspx.vb" Inherits="Testemostrauser" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Label ID="Label1" runat="server"></asp:Label>
    </form>
</body>
</html>

Partial Class Testemostrauser
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label1.Text = User.Identity.Name
    End Sub
End Class

Se colocar o esse mesmo código na masterpage.vb dá erro:

Imports Microsoft.VisualBasic.ApplicationServices
Imports System.Web.Security
Partial Class NovaMasterPage_VB
    Inherits System.Web.UI.MasterPage
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        lblUtilizador.Text = User.Identity.Name
    End Sub
End Class

O erro que dá é (aparece sublinhado às ondas e deixando o rato em cima mostra o seguinte) : 'Identity' is not a member of 'Microsoft.VisualBasic.ApplicationServices.User'

Como posso/devo contornar isto?

Todas as ajudas são bem vindas! :D


Um abraço, Ricardo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
paulo silva

 Imports Microsoft.VisualBasic.ApplicationServices

Boas,

podes contornar utilizando uma variável de sessão, Atribuis na altura do login o nome do utilizador e preenches na variável de sessão.

Então depois consegues atribuir o nome à label.

É uma maneira de contornar a situação.

Cumprimentos Paulo Silva

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoGaio

Obrigado, Paulo, pela dica! :)

Acho estranho, porque ao usar o

Label1.Text = User.Identity.Name

numa página "normal" funciona bem, se usar esse código na master.vb dá aquele erro... :D

Acabei por fazer assim, na MasterPage.master.vb:

Partial Class MasterPage
    Inherits System.Web.UI.MasterPage

    Function GetUserName() As String
        Dim parts() As String = Split(My.User.Name, "\")
        Dim username As String = parts(1)
        Return username
    End Function

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        lblUtilizador.Text = GetUserName()
    End Sub
End Class

(Adaptado daqui: http://msdn.microsoft.com/en-us/library/ts4s4536.aspx)

Funciona e muito bem!  :biggrin:


Um abraço, Ricardo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
RicardoGaio

Viva!

Prosseguindo a saga (ou chaga) que referi aqui: http://www.portugal-a-programar.pt/index.php?showtopic=37665

Usando a função acima, funciona tudo bem na máquina de desenvolvimento ("Saca" o utilizador que iniciou sessão na máquina, (Utilizador de ActiveDirectory)). Correndo a partir do servidor, não aparece nenhum nome de utilizador...!  :wallbash:

Já alterei para isto:

Imports Microsoft.VisualBasic.ApplicationServices
Imports System.Web.Security

Partial Class NovaMasterPage_VB
    Inherits System.Web.UI.MasterPage

    Dim User_Em_Sessao As String = HttpContext.Current.User.Identity.Name.ToString()

    Private Function ExtractUserName(ByVal path As String) As String
        Dim userPath As String() = path.Split(New Char() {"\"c})
        Return userPath(userPath.Length - 1)
    End Function

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                lblUtilizador.Text = ExtractUserName(User_Em_Sessao)
    End Sub
End Class

Mas o problema mantém-se... :)

Alguém tem mais algumas sugestões...?


Um abraço, Ricardo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.