Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Строка подключения к БД


Автор: Lion_Smith 13.8.2008, 16:19
Я создаю сайт. Аутентификация на сайте производиться с помощью MemberShip API.
Для этого:
1) используя встроенные инструменты VS2008 в папке проекта я создал папку с базой данных App_Data\Database.mdf.
2) Затем используя SQL Server Management Studio Express я подключил эту базу данных к SQL Server 2005 Express.
3) C помощью утилиты aspnet_regsql.exe создал необходимые для MemberShip API таблицы и запросы в базе данных App_Data\Database.mdf
4) написал необходимы настройки в файле web.config

Код


<?xml version="1.0"?>
    <configuration>
    <connectionStrings>
        <add name ="MemberShipConString" connectionString ="Data Source=.\SQLEXPRESS;AttachDbFilename=G:\Work\MySite\Project\site\App_Data\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>
   <system.web>
             <authentication mode="Forms"/>

        <authorization>
            
        </authorization>

        <membership defaultProvider="MyMemberShipProvider">
            <providers>
                <add connectionStringName="MemberShipConString" name="MyMemberShipProvider" type="System.Web.Security.SqlMembershipProvider" 
                     />
            </providers>
        </membership>



Всё благополучно работает. А теперь возникает вопрос!

Как мне изменить строку подключения, чтобы путь к файлу базы данных прописывался бы относительно папки с проектом, а не жёстко указывался, как это сделано у меня сейчас. 

Ведь когда я буду переносить проект в интернет, то не буду знать абсолютного пути к файлу базы данных на сервере.

Автор: wotker 13.8.2008, 18:27
AttachDBFilename=|DataDirectory|Database.mdf;

Автор: Lion_Smith 14.8.2008, 09:27
Я знаю этот способ, как раз им и пользовался! Таким образом мы к sql серверу приклеиваем файл с базай данных, однако вся проблема в том, что приходиться указывать абсолютный путь до файла *.mdf. А я не знаю каким будет этот путь на сервере. Сервер Asp.Net, который я использую, бесплатный. Файлы на него загружаю через FTP.
Я весь инет облазил и не нашёл способа указать относительный путь для базы данных. Можно конечно формировать строку подключения динамически, программным кодом. Этот способ отлично подходит, когда работаешь с ADO. Net. Но тут строка подключения прописывается сразу и намертво в файле web.config. Кто-нибудь сталкивался с подобным являнием?
Раскажите как тогда вообще реализовывали службу безопасности на сайте? Авторизацию и хранеие учётных записей пользователя?

Автор: wotker 14.8.2008, 22:40
Цитата

Таким образом мы к sql серверу приклеиваем файл с базай данных, однако вся проблема в том, что приходиться указывать абсолютный путь до файла *.mdf.

Почему приходится? Какая выдается ошибка? Открывается подключение на локальном компьютере? Где вы нашли бесплатный хостинг asp.net?  smile 

Автор: PashaPash 14.8.2008, 23:28
Цитата(Lion_Smith @  14.8.2008,  09:27 Найти цитируемый пост)
вся проблема в том, что приходиться указывать абсолютный путь до файла *.mdf

В ответе wotker не подразумевалось "впиши вместо DataDirectory полный путь". DataDirectory - это алиаз полного пути к App_Data, который .net сам развернет и подставит.

Автор: Lion_Smith 15.8.2008, 09:58
Фигасе, магия!!!  smile 
Спасибо за разъяснения, а то я не понял сразу.

Цитата

DataDirectory - это алиаз полного пути к App_Data


Прикольная весЧЬ! Настроена спецом на папку по умолчанию App_Data в твоём проекте. В принципе в полнен удобно пользоваться... 

http://www.qsh.eu/en/Web-Hosting/ASP-NET-Hosting.aspx?show=free тут написаны условия хостинга!
Там указано, что есть доступ к MS SQL 2005 Express Edition (User Instances only).
Я с SQL пока не очень хорошо дружу. Думаю для MemberShip API этого достаточно.
Хочу смастерить не большой сайтик для себя.. мне для этого многого не надо smile

Автор: Idsa 19.8.2008, 09:38
А алиас |DataDirectory| работает только для строк соединения?
А нет ли случайно алиаса для папки текущей темы (~/App_Themes/CurrentTheme)?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)