Проблема развертывания веб-конфигурации Azure ASP.NET MVC Web.Config
Мы разрабатываем веб-приложение ASP.NET MVC, которое будет размещено в Windows Azure. Мы развернули приложение несколько раз во время разработки без каких-либо проблем. На самом деле было довольно удивительно, насколько гладко прошел процесс. Затем, когда мы приступили к развертыванию приложения для бета-тестирования, мы продолжали получать ошибки 403 "Отказано в доступе" всякий раз, когда пытались перейти к базовому URL-адресу сайта. Если бы после этого мы попытались перейти к какому-либо из различных контроллеров и действий сайта, мы получили бы 404. На ресурсе не найдено ошибок.
Другая странная вещь, которую мы заметили, заключается в том, что мы определили страницу перенаправления аутентификации как /Access/SignIn, а не по умолчанию Account/Login. На машине для разработки все работало нормально, и нас перенаправили в /Access/SignIn, но при публикации в Azure мы увидели, что нас перенаправили в /Account/Login. Это заставило нас думать, что существует проблема с файлом web.config.
Мы включили удаленный рабочий стол в развертывании Azure и взглянули на файл web.config, чтобы убедиться, что он почти полностью пуст! Единственная установка там была machineKey. Мы вручную скопировали файл web.config с одной из наших машин разработки в экземпляр виртуальной машины Azure, и с этого момента все стало работать.
Что в мире заставит развертывание уничтожить файл web.config? И как мы можем предотвратить это, поскольку мы не сможем обновлять файл web.config вручную при каждом развертывании обновления?
1 ответ
Я часто решаю подобные проблемы, просматривая содержимое файла.cspkg. Это позволяет избежать ожидания загрузки и инициализации пакета Azure. Вот шаги для просмотра содержимого.cspkg:
- Перейдите в папку /bin//app.publish.
- Переименуйте файл.cspkg в.cspkg.zip.
- Откройте.cspkg.zip. Вы найдете файл.cssx (который на самом деле является zip-файлом) для каждого проекта, на который ссылается проект Azure.
- Извлеките файл.cssx, который вы хотите проверить, и переименуйте его в.cssx.zip
- Откройте.cssx.zip и осмотрите. Для WorkerRoles, проверьте папку Approot. Для WebRoles проверьте папку sitesroot.