ユーザーは、自分の電子メールアドレスを使用して作成したSharePointサイトにログインし、これがユーザー名になります。ただし、これはMySitesに問題を引き起こします。
ユーザーがMySiteを作成すると、ユーザー名の@記号の後のURLが切り取られるため、ユーザーのメールアドレスがuser1@test.comの場合、MySiteへのURLは次のようになります。
http://host/personal/user1/
ただし、同じ電子メールプレフィックスを持ち、ドメインが異なる別のユーザー、つまりuser1@anotherdomain.comの場合、これにより問題が発生します。このユーザーのMySiteURLも
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;
....
しかし、これは役に立ちませんでした。