我已经看到有关Silverlight 2的问题,但我没有看到任何关于Silverlight 4的问题。
有没有办法让当前用户在Silverlight 4.0中运行应用程序?我以为我记得看到它作为4.0的功能之一,但我找不到它。 (也许这只是我的一厢情愿。)我认为它必须来自运行浏览器的操作系统或浏览器本身。 (该应用程序未在本地安装,它在浏览器中运行)
我有一个解决方案,我调用Web服务方法,只需执行以下操作即可获取用户名。但是,我不想调用Web服务
HttpContext.Current.User.Identity.Name.ToUpper();
提前致谢!
答案 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%>"/>