Sharepoint MySites URL Konflikt
-
18-09-2019 - |
Frage
Ein Benutzer-Logins in die Sharepoint-Website wir die E-Mail mit Adresse erstellt haben, und dies wird ihr Benutzername ein. Doch dies schafft ein Problem für MySites.
Wenn der Benutzer eine MySite die URL es nichts schneidet nach dem @ -Zeichen in den Benutzernamen, so dass, wenn der Benutzer E-Mail-Adresse ist user1@test.com die URL ihrer MySite wird:
http://host/personal/user1/
Jedoch führt dies zu einem Problem, wenn sie ein anderer Benutzer mit dem gleichen E-Mail-Präfix ist, aber mit einer anderen Domäne heißt user1@anotherdomain.com. Diese Benutzer MySite-URL muss auch sein
http://host/personal/user1/
Wenn der Benutzer meldet sich auf der Website erstellen wir ihr Profil und MySite mit diesem Code:
if (!profileManager.UserExists(username))
{
UserProfile profile = profileManager.CreateUserProfile(username);
profile["PreferredName"].Value = fullname!=null?fullname:username;
profile["WorkEmail"].Value = email != null ? email : "";
profile["PersonalSpace"].Value = email;
profile.Commit();
#region create User My Site
using (SPSite site = profile.PersonalSite)
{
if (site == null)
{
try
{
profile.CreatePersonalSite();
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(string.Format("CreateMySite - {0}", ex.Message));
throw ex;
}
}
}
#endregion
}
HttpContext.Current = httpCxt;
Gibt es etwas, was ich hier tun kann die URL verwendet zu kontrollieren?
- bearbeiten
Das oben gezeigte Verhalten ist Standard für MOSS. D. h Ich bin nicht manuell der Benutzer E-Mail-Adresse nehmen, ist dies etwas, das MOSS automatisch tut. Ich würde es vorziehen, wenn ich die URL sollte sagen könnte:
http://host/personal/user1-at-test-dot-com
Ich habe versucht, die E-Mail-Adresse zu entkommen und auf den persönlichen Bereich Wert wie so zuweisen:
string clean = email.Replace("@","-at-");
profile["PersonalSpace"].Value= clean;
....
aber das hat nicht geholfen.
Lösung
Dies ist eine ungewöhnliche Art und Weise, es zu tun, ist es einen bestimmten Grund, warum die Benutzer auf der Basis der E-Mail erstellt werden, nicht den Benutzernamen? Wie auch immer, hier ein paar Ideen.
- Verwenden Sie normale Namenskonfliktlösungen, gehören die Domain in der URL USER_DOMAIN,
- schafft eine einzigartige Id user_1, user_2 wenn ein Konflikt geschieht und überprüfen, welche Zahl nach dem Unterstrich ist die nächsten zu erzeugen.
Bearbeiten
Auf der Basis Ihres bearbeiten, können Sie die Konfliktlösung in Moos selbst konfigurieren, das ist, warum ich sagte, dass es eine seltsame Art und Weise zu schaffen, die URLs ist,
In Ihrem SSP, gehen Sie zu MySite Einstellungen, Blick auf die Site Naming Format Gruppe
Ihre Optionen:
-
Benutzername (nicht Konflikte lösen) Beispiel: http: // portal_site / Standort / Benutzername /
-
Benutzername (Konflikte lösen, indem Sie Domäne_Benutzername) Beispiel: ... / Benutzername / oder ... / Domäne_Benutzername /
-
Domain und den Benutzernamen (wird nicht haben Konflikte) Beispiel: http: // portal_site / Standort / Domäne_Benutzername /