1

ユーザーは、自分の電子メールアドレスを使用して作成した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;

....

しかし、これは役に立ちませんでした。

4

1 に答える 1

4

これは珍しい方法ですが、ユーザー名ではなく電子メールに基づいてユーザーが作成される特別な理由はありますか?とにかく、ここにいくつかのアイデアがあります。

  • 通常の名前の競合ソリューションを使用し、URLuser_domainにドメインを含めます。
  • 競合が発生した場合は、一意のID user_1、user_2を作成し、アンダースコアの後にある番号を確認して、次のIDを生成します。

編集

編集内容に基づいて、モス自体で競合解決を構成できます。そのため、URLを作成する奇妙な方法だと言いました。

SSPで、[マイサイト設定]に移動し、[サイトの名前付け形式]グループを確認します

あなたのオプション:

于 2009-12-08T12:50:49.467 に答える