ASP.NET 4.0 публикация проекта и проблемы с ASPNETDB.MDF

07:10:2010 Рі.

В заметке рассматривается проблема при публикации (publish) проекта веб-сайта на ASP.NET 4.0, созданного в VisualStudio 2010.

Суть проблемы:в процессе разработки на локальной машине веб-сайт работает корректно, однако, при публикации возникают ошибки с окном авторизации, которое создается по умолчанию с проектом в VisualStudio 2010 (Membership API). 

По умолчанию в процессе разработки используется локальный экземпляр MSSQLServer, к которому присоединяется база данных ASPNETDB.MDF, расположенная в каталоге App_Data. При переносе на реальный сервер файлы БД не могут быть приаттачены.

Появление авторизационной формы является выражением желания Microsoft автоматически приобщать сообщество к использованию Membership API. Поэтому подобные проблемы возникали у молодых разработчиков и раньше, но были они связаны непосредственно с началом применения API. Теперь же при публикации ASP.NET 4.0 Web-проекта вопрос возникает автоматически – как подключить ASPNETDB.MDF к проекту?

На большинстве ресурсов, посвященных либо SQL либо программированию на ASP.NET описываются либо шаги, связанные с серверными настройками, либо использование методов, требующих особых привилегий пользователя для проведения операции. Большинство из авторов не учитывает, что проекты часто разворачивают не на выделенные сервера, а на хостинг-аккаунты, где возможность выполнения операций с административными привилегиями отсутствует.

Для решения проблемы используйте следующие шаги:

1) В папке вашего .NET Framework найдите нужный. К примеру, Windows\Microsoft.NET\Framework\v4.0.30319 - файл aspnet_regsql.exe
В мануалах рассматривается обращение к этому файлу через консоль, но зачем усложнять дело, когда при непосредственном запуске есть GUI интерфейс Данная утилита подготовит базу данных к использованию Membership API.

Главное – указать соединение с MSSQL-сервером и конечную БД, как показано на скриншоте ниже.

По-сути база данных теперь является копией той, которая лежит в папке App_Data. Возникает вопрос – зачем создавать копию БД с помощью утилит, когда у нас есть реальный файл ASPNETDB.MDF, который был доступен в процессе разработки ASP.NET 4.0 веб-сайта без проблем? Возможна такая ситуация когда вы в процессе разработки будете использовать более новую версию MSSQL, чем та, которая предоставляется хостером. Можно решать проблемы с совместимостью, но если это только начало разработки то намного проще использовать aspnet_regsql для модификации БД – поставить версию MSSQL ниже, чем та, которая создается по умолчанию и работать с ней.

Из модифицированной базы создаем *.bak файл с помощью функции Backup Database. Восстанавливаемся на сервере.

2) Конфигурируем файл Web.config в проекте. Интересуют строчки, указывающие строку подключения. В атрибуте connectionString вместо дефолтного значения:data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true
указываем наше подключение к БД

Все готово.

 

Комментарии  

 
0#3Viktor2011-10-25 14:05Не то слово :)Цитировать
 
 
0#2ощ2011-08-27 17:27Ну сделал ты продукт, ну доведи же его по человечески до людей!
или кривые ?
Цитировать
 
 
0#1ощ2011-08-27 17:22Версия уже 4 (ASP.NET 4.0)
а что до публикации, так и проблемы.
микрософт, да и не какой он не Майкрософт!!!
Цитировать
 

Добавить комментарий



Обновить

« Извлечь из HTML текст в C#   Left Join SQL пример запроса с объяснением »
← Раньше

Фотоальбом

fotic.jpg

Облако Тегов