«ClaimsPrincipal» не содержит определения для «GetUserId».

Некоторое время назад я создал проект, используя шаблон веб-приложения ASP.Net 5. Я вспоминаю проект, построенный в то время.

Теперь, когда я пытаюсь создать старый проект, который я создал, у меня возникает ошибка

Severity    Code    Description Project File    Line    Suppression State
Error   CS1061  'ClaimsPrincipal' does not contain a definition for 'GetUserId' 
and no extension method 'GetUserId' accepting a first argument of type 'ClaimsPrincipal' could be found
 (are you missing a using directive or an assembly reference?)  KGWebsite.DNX 4.5.1, KGWebsite.DNX Core 5.0 
E:\EShared\Dev2016\KG.Website\KGWebsite\src\KGWebsite\Controllers\Web\ManageController.cs   291 Active

Когда я создаю новый проект с нуля, используя тот же шаблон, новый проект будет построен. У меня проблемы с устранением различий между двумя проектами.

Оба используют DNX4.5.1, который отображается в обозревателе решений как имеющий ссылку на Microsoft.AspNet.Identity (3.0.0-rc1-final).

Когда я углубляюсь в метаданные для Microsoft.AspNet.Http в рабочей копии, у меня есть

#region Assembly Microsoft.AspNet.Http.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// C:\Users\kirsten\.dnx\packages\Microsoft.AspNet.Http.Abstractions\1.0.0-rc1-final\lib\net451\Microsoft.AspNet.Http.Abstractions.dll
#endregion

В нерабочем экземпляре у меня есть

#region Assembly Microsoft.AspNet.Mvc.ViewFeatures, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
// C:\Users\kirsten\.dnx\packages\Microsoft.AspNet.Mvc.ViewFeatures\6.0.0-rc1-final\lib\net451\Microsoft.AspNet.Mvc.ViewFeatures.dll
#endregion

Какие шаги я должен предпринять, чтобы исправить проект, который не работает?


person Kirsten Greed    schedule 09.02.2016    source источник


Ответы (1)


Метод GetUserId() — это метод расширения, реализованный в пространстве имен System.Security.Claims. Итак, чтобы использовать метод, просто добавьте пространство имен в свой класс:

using System.Security.Claims;
person Sam FarajpourGhamari    schedule 10.02.2016
comment
Спасибо, я не нахожу методы расширения очень интуитивными - person Kirsten Greed; 11.02.2016
comment
Это изменилось в RC2 — теперь вам нужно внедрить свой экземпляр UserManager и вызвать для него `GetUserID(User). github.com/aspnet/Announcements/issues/140 - person Sam; 21.05.2016