MVC 3 под сайта? - PullRequest
       1

MVC 3 под сайта?

0 голосов
/ 12 декабря 2011

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

public class AccountController : Controller
{

    // This constructor is used by the MVC framework to instantiate the controller using
    // the default forms authentication and membership providers.
    private CustomMembershipDB datacontext;
    public AccountController()
        : this(null, null)
    {
        datacontext = new CustomMembershipDB();
    }
    // This constructor is not used by the MVC framework but is instead provided for ease
    // of unit testing this type. See the comments at the end of this file for more
    // information.
    public AccountController(IFormsAuthentication formsAuth, IMembershipService service)
    {
        FormsAuth = formsAuth ?? new FormsAuthenticationService();
        MembershipService = service ?? new AccountMembershipService();
    }

    public IFormsAuthentication FormsAuth
    {
        get;
        private set;
    }

    public IMembershipService MembershipService
    {
        get;
        private set;
    } 

Ошибка, которую я получаю:

Описание: во время обработки файла конфигурации, необходимого для обслуживания этого запроса, произошла ошибка. Пожалуйста, просмотрите подробности конкретной ошибки ниже и измените файл конфигурации соответствующим образом.

Сообщение об ошибке Parser: запись 'EFMembershipProvider' уже добавлена.

Похоже, IIS жалуется на наличие дублирующего провайдера членства в одном домене и не уверен, что простое переименование его решит эту проблему? Любая идея ценится как новичок, и это выше меня!

1 Ответ

1 голос
/ 12 декабря 2011

Я полагаю, что ваш "дочерний сайт" является виртуальным каталогом первого. Настройки Root Web.config наследуются виртуальным каталогам.

Это означает, что по умолчанию ваш дочерний сайт получает всех провайдеров, объявленных на вашем верхнем сайте.

Чтобы предотвратить такое поведение, вы можете использовать эту директиву inheritInChildApplications=false на своем основном Web.config или просто избегать (повторно) объявлять EFMembershipProvider в вашем дочернем сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...