2010-08-12 4 views
4

Я видел этот вопрос, поставленный в отношении Silverlight 2, но я не видел какие-либо вопросы Silverlight 4.Silverlight 4 Получить текущий пользователь

Есть ли способ, чтобы получить текущий пользователь работает приложение в Silverlight 4.0? Мне показалось, что я помню, что это одна из особенностей 4.0, но я не могу ее найти. (Может быть, это было просто принятие желаемого за действительное с моей стороны.) Я бы предположил, что это должно было произойти из ОС, запускающей браузер или сам браузер. (Приложение не устанавливается локально, оно запущено в браузере)

У меня есть решение, в котором я вызываю метод веб-службы, который выполняет только следующее, чтобы получить имя пользователя. Тем не менее, мне не нужно называть веб-службу

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

Заранее благодарен!

ответ

1

Вы могли бы найти это проще просто передать имя в SilverLight приложение в качестве параметра

+0

, если вы можете динамически изменять контекст страницы (как в ASPX или Mvc зрения) http://nerddawg.blogspot.com/2008/03/how-to-pass-initialization- params-to.html вместо startPage = Page1 напишите имя пользователя = <% = User.Identity.Name%> – mcintyre321

+0

, если вам действительно нужно, запросите Silverlight текущий url для имени пользователя – mcintyre321

+0

Извините за поздний ответ. Простое решение - просто включить проверку подлинности для вашего сайта IIS. Затем в default.aspx (или какая страница asp запускает ваше приложение), чтобы поместить пользователя в InitParams, как это, и прочитать их в mainpage.xaml.cs: 'System.Text.StringBuilder sb = new System.Text.StringBuilder (); sb.Append (" "); InitParams.Text = sb.ToString()' – hewstone

0

Я искал одно и то же, но, насколько я нашел, это все еще невозможно.

Кто-то отправил обходной путь ASP.Net здесь Get current Windows user name within Silverlight, но я не имел шанс попробовать еще

2

Getting клиентская сторона Username в стандартном приложении Silverlight Silverlight просто не произойдет, было бы очень плохо, если бы это было возможно.

Лично, если бы у меня было это требование, я бы, вероятно, использовал некоторые веб-службы, WCF или просто сервер IHttpHandler. Однако я был бы склонен называть его чем-то вроде «UserContext» и отправлять XML. XML будет содержать имя пользователя. Это позволит добавить дополнительное пользовательское состояние в XML позже, когда станут понятны новые требования. Добавление этих новых фрагментов информации было бы легко.

1

В теге объекта Silverlight добавьте новый параметр с именем initParam (обратите внимание на корпус). Благодаря этому вы можете передавать значения в виде ключей = значение [, ключ = значение, ...]. Здесь я передаю ключ usrIdentity и значение как имя текущего пользователя.

<param name="initParams" value='[email protected]'/> 

В вашем App.xaml.cs в вас Application_Startup будет иметь следующий код

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

+0

Это решение не работает. –

0

Исправление к @Vishnoo Rath; Вы должны попробовать это:

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