.Net 4.0 System.Web.Security.MembershipProvider неоднозначная ссылка? - PullRequest
15 голосов
/ 15 сентября 2010

Я недавно обновил мою установку BlogEngine.Net до версии 1.6 и .Net 4.0, однако я не собирал BlogEngine.Core при выполнении обновления. Однако, когда я пытаюсь создать проект BlogEngine.Core, компиляция завершается неудачно, поскольку она не может загрузить символы для (System.Web.Security.) MembershipProvider. Я считаю, что это проблема .Net / C # / пользователя, а не проблема BlogEngine.

В проекте имеется ссылка на библиотеку System.Web, а файл класса (который наследуется от MembershipProvider) включает использование для System.Web.Security. При включенном ReSharper IntelliSense указывает на путаницу в отношении того, какой поставщик членства использовать, предоставляя выбор из двух библиотек с одинаковым именем (System.Web.Security).

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

Ответы [ 2 ]

37 голосов
/ 15 сентября 2010

Проблема решена. Пространство имен System.Web.Security является членом System.Web, однако оно также является членом System.Web.ApplicationServices. В проекте была ссылка на System.Web, а оператор using ссылался на System.Web.Security, поэтому IntelliSense не выбрасывал флаг при указании класса. Однако в проекте отсутствовала ссылка на System.Web.ApplicationServices. В проекте была ссылка на класс, но он не мог загрузить класс, потому что отсутствующая сборка (... ApplicationServices) отсутствовала.

3 голосов
/ 28 марта 2012

Я только что столкнулся с этой же проблемой при создании настраиваемого поставщика членства для моего веб-приложения.Вам необходимо удалить ссылку на System.Web и добавить следующие ссылки.- System.Web.ApplicationServices - System.Configuration

...