SharePoint MySites URL の競合
-
18-09-2019 - |
質問
ユーザーは、電子メール アドレスを使用して作成した SharePoint サイトにログインし、これがユーザー名になります。ただし、これは MySite にとって問題を引き起こします。
ユーザーが MySite を作成すると、URL はユーザー名の @ 記号以降を切り取ります。そのため、ユーザーの電子メール アドレスが user1@test.com の場合、MySite への URL は次のようになります。
http://host/personal/user1/
ただし、相手が同じメールプレフィックスを持つ別のユーザーである場合、つまりドメインが異なる場合、これは問題を引き起こします。user1@anotherdomain.com。このユーザーの MySite URL も次のようにする必要があります。
http://host/personal/user1/
ユーザーがサイトにサインアップすると、次のコードを使用してプロフィールと MySite が作成されます。
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;
使用される URL を制御するために何かできることはありますか?
- 編集
上記の動作は MOSS のデフォルトです。つまり、ユーザーの電子メール アドレスを手動で取得しているわけではありません。これは MOSS が自動的に行っていることです。URL は次のとおりであると言えれば幸いです。
http://host/personal/user1-at-test-dot-com
電子メールアドレスをエスケープして、次のようにパーソナルスペース値に割り当ててみました。
string clean = email.Replace("@","-at-");
profile["PersonalSpace"].Value= clean;
....
しかし、これは役に立ちませんでした。
解決
これは珍しい方法ですが、ユーザー名ではなく電子メールに基づいてユーザーが作成される特別な理由はありますか?とにかく、ここにいくつかのアイデアがあります。
- 通常の名前競合解決策を使用し、URL user_domain にドメインを含めます。
- 競合が発生した場合は一意の ID user_1、user_2 を作成し、アンダースコアの後の番号を確認して次の ID を生成します。
編集
編集内容に基づいて、moss 自体で競合解決を設定できます。これが URL の作成方法が奇妙なと述べた理由です。
SSP で、MySite の設定に移動し、 サイトの命名形式 グループ
オプション:
ユーザー名(競合を解決しないでください)例: http://ポータルサイト/場所/ユーザー名/
ユーザー名(domain_usernameを使用して競合を解決)例:.../ユーザー名/ または .../ドメインユーザー名/
ドメインとユーザー名(競合がありません)の例: http://ポータルサイト/場所/ドメインユーザー名/