質問

ユーザーは、電子メール アドレスを使用して作成した 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 の設定に移動し、 サイトの命名形式 グループ

オプション:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top