På min nåværende prosjekt, noen av brukerne vil reise verden rundt, og når de mottas på ulike destinasjoner, bruke hva maskin er nyttig når. Disse gjest maskinene vil kjøre Windows og installert og konfigurert for den lokale nasjonale. (Jeg har akkurat innsett at gjest-maskiner ikke kan har de riktige språkpakkene… sannsynligvis ikke, faktisk… Jeg er parkering at man for nå).
SharePoint må mekanisme der brukeren kan velge sitt eget språk og har MOSS ære språket uansett hvordan brukeren får tilgang til MOSS. Med andre ord, ignorere hva leseren forteller IIS RUNDPINNE og i stedet se det foretrukne språk og bruke den.
Vi skal undersøke to tilnærminger:
- HTTP Handler: Et egendefinert HTTP-behandlingsprogram installert på IIS vil slå opp brukerprofilen MOSS, finne ut foretrukket språk og deretter bytte HTTP-overskriften rundt etter behov før sendes kontroll til MOSS.
- Global.asax: Endre global.asax gjør samme. Vi kan endre noe annet, men ideen er at vi finner et sted der vi kan sette vår nasjonale bytte logikk.
Den andre kompliserende faktoren er at vi trenger å støtte 60 k brukere, om 1,000 av tilgang som kan være samtidig til MOSS på meste laste.
Http-behandler synes ganske drastiske, men kanskje det beste stedet å plassere koden siden det er IIS nivå og allvitende. Det er et godt arbeid.
Vi skjev mot en global.asax type tilnærming, hovedsakelig fordi vi tror har vi flere alternativer for å bufre data på dette tidspunktet.
Jeg vil være blogging mer om dette temaet, så jeg lære mer.
Hvis du har vet noe om dette, please post a comment 🙂
</slutten>
Følg meg på Twitter på http://www.twitter.com/pagalvin
Jeg har ikke testet dette så jeg ikke er sikker på om det fungerer.
Siden klassen har en InitializeCulture() metode som kan overstyres. Hvis du gjør dette i koden bak for din egendefinerte masterpage, du kunne gjøre noe langs linjene av:
beskyttet overstyre void InitializeCulture()
{
// overstyre virtuell metode InitializeCulture() å sjekk hvis profilen inneholder en bruker språkinnstilling
streng UserCulture = GetCultureFromUserProfile();
Hvis ( UserCulture != "")
{
// Det er en bruker språkinnstillingen i profilen: bytte til den
Thread.CurrentThread.CurrentUICulture = nye CultureInfo(UserCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(UserCulture);
}
}
Selvsagt kan du bygge noen skjulested i implementeringen av denne metoden.
Kilde: http://quickstarts.asp.net/QuickStartv20/util/srcview.aspx?Path=~/ASPNET/samples/localization/LocalizePers.src&fil = LocalizePers_cs\LocalizePers_cs.aspx&lang = C % 23 kilde
Jeg tenker HTTP-behandling med følgende strømmen:
1. Forespørsel, Sjekk informasjonskapsler for en session cookie for språkinnstilling (øktinformasjonskapsler utløper når leseren er lukket)
2. Sjekk hvis forespørselen er for ASPX-side, Hvis ikke, hoppe over forespørsel
3. Hvis informasjonskapselen finnes, Angi verdi angitt i overskriften språk. Du er ferdig!
4. Ingen informasjonskapsler, ta godkjenning legitimasjonen og se brukeren i SPS, Finn språkinnstilling
5. Angi informasjonskapseloverskrift og HTTP language overskriften. Gjort.
Første APX sideforespørsel har overhead av SPS oppslag, men hver forespørsel fra da av med har ingen oppslag så blir opprinnelig hastighet. Ikke behov for hurtigbuffer eller noen andre kostnader ved hjelp av en øktsinformasjonskapsel for. Når leseren er lukket, øktens informasjonskapsel forsvinner. Hvis brukeren endrer deres språk preferanse i SPS trenger de bare å lukke og åpne nettleseren for den å tre i kraft.
faktisk http-behandling ikke på iis nivå…Det er på programnivå (ISAPI-filtre er på IIS)…Jeg vil være forsiktig bc SP har sin egen hånd…så sørg for å teste den ut…Jeg har gjort det før, men har hatt noen konflikt med det SP hånd.
Jeg ville være mer tilbøyelig til å bruke en HTTPHandler, den eneste grunnen er at jeg ikke liker berøre SharePoint-filer. Pluss det er enkelt å opprette en SharePoint-løsning for å distribuere en HttHandler ( og bruke APIEN SPWebConfig til å endre filen web.config). Har brukeren lasten gjør du, Jeg vil tro du har en betydelig gård, du virkelig vil ikke gå modifiying filer på hver server.
Distribuere filen global.asa via en løsning er en dårlig idé, Hvis du gjøre det, den opprinnelige filen er borte …
Også har muligheten til å kalle tilbake løsningen raskt kan være en god idé, i tilfelle ting går galt med perf av behandleren.