Silverlight – Unter Windows den angemeldeten Benutzer ermitteln

by Gregor Biswanger 29. Juni 2009 03:39

Sobald eine Silverlight Anwendung für eine Unternehmenslösung entwickelt wird, kommt meist die zusätzliche Anforderung, dass der aktuell Angemeldete Benutzer und dessen Domäne abgefragt wird. Desweiteren kann dieser Wunsch auch bei der Kombination von SharePoint und Silverlight erwünscht sein. So das weitere Verarbeitungen unter dessen Namen angesteuert werden.

Dennoch gibt es hier ein großes Problem! Silverlight wird in der Sanbox vom Browser gefangen gehalten. Womit Silverlight auf dem Client keine direkten Abfragen stellen kann und somit Isoliert im eigenen Bereich läuft. Die unterschiedlichen Browser selbst, können dagegen weitaus mehr Informationen vom Betriebssystem abfragen. Es müsste daher mittels JavaScript oder ASP.NET diese Abfrage durch den Browser bewerkstelligt werden und die enthaltenen Informationen an die Silverlight Anwendung weiterreichen.

Genau für diese Problematik bietet Silverlight die Möglichkeit, dass beim Starten der Silverlight Anwendung bestimmte Informationen per Parameter weitergegeben werden können. Hier wäre dennoch die einzige Einschränkung, dass die Informationen vor der Initialisierung der Anwendung bereits zur Verfügung stehen müssen. Was in der Regel aber kein Problem seien dürfte.

Ein Beispielprojekt

Es wird hier durch ein kurzes Beispielprojekt Demonstriert, wie mittels ASP.NET der aktuell Angemeldete Benutzer ermittelt wird und wie diese Informationen beim Starten der Silverlight Anwendung weitergereicht werden. Dazu wird ein neues Silverlight Projekt in Visual Studio erzeugt, bei diesem Artikel handelt es sich um die Silverlight Version 3. Der Name des Projektes lauter: HelloUserFromSilverlight. Darauf folgt auch schon ein Dialog mit der Abfrage ob auch die passende Web Application erzeugen werden soll. Das wird hier mit „OK“ bestätigt. Um das Design und die Architektur besser ersichtlich zu machen, werden zwei neue Solution Verzeichnisse in der Solution angelegt „Server“ und „Client“. Hier werden die zwei unterschiedlichen Projekte untergebracht (siehe Abb.1.2).

Abb.1.1. – Neues Silverlight Projekt erzeugen.

Abb.1.2. – Struktur und Aufbau des Silverlight Projektes.

Leider wird unter der automatisch erzeugten HelloUserFromSilverlightTestPage.aspx keine Code-Behind-Datei angeboten. Womit für dieses Demo nur die Default.aspx interessant wird (das hinzufügen einer neuen Webform wäre zudem genauso möglich). Anschließend wird in die Default.aspx-Seite das Silverlight Controll und der Script Manager aus der Toolbox hineingezogen (siehe Abb.1.3).

Abb.1.3. – ASPX-Page für Silverlight vorbereiten.

Daraufhin werden noch ein paar Properties vom Silverlight Controll angepasst. Das erste wäre die Höhe und die Breite von „px“ auf „%“ zu ändern. Damit die Größe automatisch von der Silverlight Anwendung übernommen wird. Damit das Controll überhaupt weiß, welche Silverlight Anwendung verwendet werden soll, muss dies mittels Source deklariert werden. Wenn die Source mit Hilfe von Visual Studio durch „Pick URL..“ hinzugefügt werden soll, muss das Projekt erst einmal gebuildet werden ([ Strg ] + [ Shift ] + [ B ]).

 

Abb.1.4. – Silverlight Controll angepasst.

Jetzt kann die Default.aspx-Seite die Silverlight Anwendung auf den Browser starten und zur Verfügung stellen. Doch soll beim Starten der Silverlight Anwendung der aktuelle Benutzer als Parameter überreicht werden. Das wird jetzt in der Code-Behind-Datei verwirklicht. Dazu kann man auf das Silverlight Controll mit den Namen, der in der Proptertie ID steht zugegriffen werden, bei diesem Beispiel wäre das Silverlight1. Das Controll bietet für Parameter eine Property an, mit dem Namen InitParameters. Parameter unter Silverlight werden mit folgendem Format deklariert: parameter1=“Hallo Welt“, parameter2=“Ein weiteres Wort.“. Wobei hier „parameter1“ für den Index-Schlüssel steht und zum Beispiel „Hallo Welt“ den Wert des Parameters deutet.

Genau mit diesem Format soll nun mit einem Index-Schlüssel „currentuser“ der aktuelle Benutzer von ASP.NET ermittelt und weitergereicht werden. Der Source-Code dazu ist unter Abb.1.5. zu sehen.

 

Abb.1.5. – Aktuellen Benutzer über den Parameter an Silverlight weiterreichen.

Nun wäre von der Server-Seite aus alles erledigt. Dann müssen nur noch die Parameter beim Initialisieren der Anwendung in die allgemeinen Resourcen der Application gesichert werden. Dazu wird unter der App.xaml.cs-Datei, die StartUpEventArgs verarbeitet. Hier findet sich exakt dieselbe Propertie mit InitParams wieder, die allerdings zudem die Parameter ansehnlich als Collection aufgearbeitet anbietet. Diese wird auf den Count überprüft und dann in den allgemeinen Resourcen zur Verfügung gestellt.

Abb.1.6. – Parameter in die Resourcen hinzufügen

Damit der Benutzer auch in der Anwendung angezeigt werden kann, muss jetzt in der XAML-Datei MainPage.xaml ein TextBlock dazu. In der dazugehörigen Code-Behind-Datei MainPage.xaml.cs wird aus den Resourcen mittels Schlüssel-Index „currentuser“ der Wert ausgelesen und dem TextBlock weitergegeben.

 

Abb.1.7. – XAML-Code der Silverlight Anwendung

 

Abb.1.8. – Resource wird ausgelesen und dem TextBlock bekannt gegeben

Die Beispielanwendung wäre jetzt fertig. Dass auch von der Default.aspx-Seite die Anwendung richtig ausgeführt wird, muss jetzt nur noch unter den Eigenschaften des Web-Projekts beim Bereich Web die Default.aspx als Startseite ausgewählt werden.

Abb.1.9. – Default.aspx als Startseite

Abb.1.10. – Die fertige Beispielanwendung

Fazit

Mit dem Parameter Handler in Zusammenarbeit wie zum Beispiel mit ASP.NET, lassen sich trotz Sandbox, auf aufschlussreiche Informationen zugreifen.          

Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
kick it on dotnet-kicks.de

Kommentare

Powered by BlogEngine.NET 1.4.5.0
Theme by Extensive SEO

Über den Autor

Gregor Biswanger

Microsoft MVP für Client App Dev
XING

Gregor Biswanger (Microsoft MVP für Client App Dev) ist freier Consultant, Trainer, Autor und Speaker.


Seine Schwerpunkte liegen im Bereich der .NET-Architektur, agilen Prozessen und XAML. Er veröffentlichte vor kurzem seine DVD´s mit Video-Trainings zum Thema „Meine erste Windows 8 App“, „Windows Store Apps mit XAML und C#“ und „WPF 4.5 und Silverlight 5“ bei Addison-Wesley von video2brain.


Biswanger ist auch im Auftrag von Intel GmbH als Technologieberater für die Intel Developer Zone aktiv und ist Leader bei der Ingolstädter .NET Developers Group (INdotNET). 

 

Video über mich:
http://www.youtube.com/watch?v=mx_6SiiLxjk


Basta! 2011 Speaker

CLIPer

MCTS
Windows SharePoint Services 3.0 – Application Development (MCTS)