イントラネットのasp.net mvc Webアプリケーションに取り組んでいます。そして、さまざまなクラスからさまざまなユーザー名形式を取得しています。たとえば、Create Post アクション メソッドでは、現在のログイン ユーザーのユーザー名を取得し、次のように CreatedBy フィールドに割り当てます。
public ActionResult Create(Group group)
{try
{if (ModelState.IsValid) {
Group.CreatedBy = User.Identity.Name;
repository.InsertOrUpdateGroup(group);
repository.Save();
repository.InsertOrUpdateAudit(auditinfo);
User.Identity.Name は次のようなものになります:-domainname\username
別のアクション メソッドの場合、すべての Active Directory ユーザー名のリストを取得したいので、次を使用します。
List<DomainContext> results = new List<DomainContext>();
using (var context = new PrincipalContext(ContextType.Domain, "WIN-SPDEV"))
using (var searcher = new PrincipalSearcher(new UserPrincipal(context))) {
var searchResults = searcher.FindAll();
foreach (Principal p in searchResults) {
DomainContext dc = new DomainContext();
dc.DisplayName = p.DisplayName;
dc.userGuid = p.UserPrincipalName;
その場合、UserPrincipleName は でuser1@domainname.local
あり、 ではありませんdoaminname\username
。したがって、この方法では、同じ Active Directory ユーザーを表す異なる文字列が得られます。割り当てまたは取得する方法に関係なく、すべてのユーザー名を標準にする方法はありますか?