Silverlight 4获取当前用户

时间:2010-08-12 18:45:30

标签: silverlight

我已经看到有关Silverlight 2的问题,但我没有看到任何关于Silverlight 4的问题。

有没有办法让当前用户在Silverlight 4.0中运行应用程序?我以为我记得看到它作为4.0的功能之一,但我找不到它。 (也许这只是我的一厢情愿。)我认为它必须来自运行浏览器的操作系统或浏览器本身。 (该应用程序未在本地安装,它在浏览器中运行)

我有一个解决方案,我调用Web服务方法,只需执行以下操作即可获取用户名。但是,我不想调用Web服务

HttpContext.Current.User.Identity.Name.ToUpper();

提前致谢!

5 个答案:

答案 0 :(得分:2)

在标准的Inbrowser silverlight应用程序中获取用户名客户端是不会发生的,如果可能的话,安全性将是一件非常糟糕的事情。

就个人而言,如果我有这个要求,我可能会使用一些Web服务,WCF或简单的IHttpHandler服务器端。但是,我倾向于将其称为“UserContext”并发送XML。 XML将包含用户名。这将允许稍后将额外的用户特定状态添加到XML,因为进一步的要求变得清晰。添加这些新的信息块很容易。

答案 1 :(得分:1)

您可能会发现将名称作为参数传递给silverlight应用程序更容易

答案 2 :(得分:1)

在Silverlight对象标记中添加一个名为initParam的新参数(注意大小写)。通过此,您可以将值传递为key = value [,key = value,...]对。 在这里,我将usrIdentity和value的密钥作为当前用户身份名称传递。

<param name="initParams" value='usrIdentity=@HttpContext.Current.User.Identity.Name'/>

在Application_StartUp的App.xaml.cs中,您将拥有以下代码

private void Application_Startup(object sender, StartupEventArgs e)
{
    this.RootVisual = new MainPage();
    if (e.InitParams.ContainsKey("usrIdentity"))
    {
        //I have a public static string WindowsUser on my MainPage.xaml.cs
        MainPage.WindowsUser = e.InitParams["usrIdentity"];
    }
}

这是来自hewstone的建议。 MS链接为http://msdn.microsoft.com/en-us/library/cc189004(v=vs.95).aspx

答案 3 :(得分:0)

我一直在寻找相同的东西,但据我所知,它仍然是不可能的。

有人在这里发布了ASP.Net解决方法Get current Windows user name within Silverlight,但我还没有机会尝试呢

答案 4 :(得分:0)

对@Vishnoo Rath的更正;你应该试试这个:

<param name="initParams" 
       value="usrIdentity=<%=HttpContext.Current.User.Identity.Name%>"/>