Auf meinem aktuellen Projekt, Einige Benutzer reist um die Welt und wenn sie an verschiedenen Zielorten ankommen, Verwenden Sie, welcher Maschine ist praktisch zum Zeitpunkt. Diese Gastcomputer läuft Windows installiert und konfiguriert für die lokalen Gebietsschema. (Ich habe nur erkannt, dass die Gastcomputer vielleicht nicht die richtige Language packs… wahrscheinlich nicht, Tatsächlich… Ich bin, dass man fürs Parken).
SharePoint muss einen Mechanismus bereitstellen, wobei der Benutzer kann wählen Sie ihre bevorzugte Sprache und dann zu Ehren dieser Sprache unabhängig davon, wie die Benutzer Moos zugreifen Moos. Mit anderen Worten, ignorieren Sie, was dem Browser mitteilt, IIS/MOSS und stattdessen die bevorzugte Sprache nachschlagen Sie und verwenden Sie es.
Wir werden zwei Ansätze zu untersuchen:
- HTTP-Handler: Ein benutzerdefinierter HTTP-Handler auf IIS installiert wird das Profil des Benutzers MOSS nachschlagen., die bevorzugte Sprache herauszufinden Sie und dann wechseln Sie den HTTP-Header, um je nach Bedarf, bevor die Steuerung an Moos übergeben.
- "Global.asax": Ändern der global.asax um das gleiche zu tun.. Wir können etwas anderes ändern, aber die Idee ist, dass wir einen Platz finden wo wir unsere Gebietsschema-switching-Logik einfügen können.
Die andere erschwerender Faktor ist, dass man Unterstützung 60 k Benutzer, über 1,000 Laden von denen gleichzeitig Moos auf Höhepunkt zugreifen kann.
Der HTTP-Handler scheint ziemlich drastische, aber möglicherweise der beste Ort, um den Code zu setzen, da es über die IIS-Ebene und allwissend ist. Es ist eine gute Anlaufstelle Arbeit.
Wir sind in Richtung einer "Global.asax" Typ Ansatz gelehnt., vor allem, weil wir glauben, haben wir weitere Optionen für das Zwischenspeichern von Daten zu diesem Zeitpunkt.
Mehr zu diesem Thema Bloggen werde ich sein, wie ich mehr lernen.
Wenn wissen Sie nichts davon, please post a comment 🙂
</Ende>
Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin
Ich habe nicht das getestet, bin mir nicht sicher, ob es funktioniert.
Die Page-Klasse hat eine InitializeCulture() Methode, die überschrieben werden können. Wenn Sie dies, in den Code hinter der Ihre benutzerdefinierte Masterpage tun, Du könntest etwas entlang den Linien von machen:
protectedoverridevoid InitializeCulture()
{
// Überschreiben der virtuellen Methode InitializeCulture() Prüfen Sie, ob Profil eine Benutzereinstellung Sprache enthält
String UserCulture = GetCultureFromUserProfile();
If ( UserCulture != "")
{
// Es gibt eine Benutzer-Spracheinstellung im Profil: Wechseln sie in
System.Threading.Thread.get_CurrentThread().set_CurrentUICulture(= new CultureInfo(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
Natürlich können Sie erstellen eine Zwischenspeicherung in der Implementierung dieser Methode.
Quellcode: http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?Path=~/ASPNET/Samples/Localization/LocalizePers.src&Datei = LocalizePers_cs\LocalizePers_cs.aspx&Lang = C % 23 Quelle
Ich denke HTTP-Handler mit der folgende Ablauf:
1. Anforderung eingeht, Cookies für ein Session-Cookie für die Spracheinstellung zu überprüfen (Session-Cookies verfallen beim Schließen des Browsers)
2. Überprüfen Sie, ob die Anforderung für ASPX-Seite wird, Wenn nicht, Anfrage zu überspringen
3. Wenn Cookie vorhanden ist, Legen Sie den Language-Header auf den angegebenen Wert. Sie sind fertig!
4. Kein cookie, nehmen Sie die Authentifizierung-Anmeldeinformationen und Nachschlagen der Benutzer im SPS, bevorzugte Sprache zu finden
5. Set-Cookie-Header und HTTP-Language-header. Fertig.
Erste APX Seitenanforderung wird Overhead von SPS Suche aber jede Anfrage fortan mit haben keine Suchvorgänge so native Geschwindigkeit. Keine Notwendigkeit für Cache-Sitzung oder anderen Aufwand mit einem Session-Cookie zu. Sobald der Browser geschlossen wird, Das Session-Cookie verschwindet. Wenn der Benutzer ihre Sprachen-Präferenz in SPS ändert müssen sie nur schließen und erneut öffnen den Browser dafür wirksam.
eigentlich nicht der http-Handler auf der Iis-Ebene…Es ist auf der Anwendungsebene (ISAPI-Filter sind auf der IIS-Ebene)…Ich wäre vorsichtig, bc SP hat seinen eigenen handler…Also achten Sie darauf, um es zu testen…Ich habe es schon getan aber hatten einige Konflikte mit dem SP-handler.
Ich wäre eher geneigt, einen HTTPHandler zu verwenden, der einzige Grund ist, dass ich nicht mag, berühren die SharePoint-Dateien. Außerdem ist es leicht zu eine SharePoint-Lösung zur Bereitstellung einer HttHandler erstellen ( und die SPWebConfig-API verwenden, um die Datei web.config ändern). Nachdem die Benutzerauslastung tun Sie, Ich könnte mir vorstellen, du hast eine beträchtliche farm, Sie will nicht wirklich Modifiying Dateien auf jedem Server gehen.
Bereitstellen der Datei "Global.ASA" über eine Lösung ist eine schlechte Idee, Wenn Sie es zurückziehen, die Originaldatei ist verschwunden …
Auch mit der Fähigkeit, die Lösung schnell zurückziehen wäre eine gute Idee, für den Fall, dass etwas schief läuft mit dem Perf des Handlers.