вторник, 29 мая 2012 г.

ASP.NET и Firebird Membership Provider в Visual Studio 2010

Добрый день, читатели. Многие из вас уже сталкивались с веб программированием и наверняка все заметили что Microsoft очень сильно продвигает через студию свою базу SQL Server.

В этой статье я предлагаю ознакомиться с вариантом интеграции Firebird в технологии ASP.NET.
В частности в ASP.NET есть несколько встроенных компонентов для работы с аутентификацией и авторизацией. Их можно достаточно легко прикрутить к Firebird вместо SQL Server.

И так поехали:

1. Нам нужна будет сборка FirebirdSql.Web.Providers.dll.На момент публикации статьи самая свежая версия сборки 2.6.0. Скачать её можно по ссылке.

2. Сборка этой версии построена на основе сборки FirebirdSql.Data.FirebirdClient.dll верси 2.6.0. Поэтому вам она тоже будет нужна. Скачать её можно по ссылке. Можно ещё пойти сложным путем - скачать исходник и перекомпилировать его с более новой версией файла FirebirdSql.Data.FirebirdClient.dll.

3. Скачиваем  FirebirdSql.Data.FirebirdClient.dll, распаковываем куда-нибудь и устанавливаем её в глобальный кэш сборок (GAC). В Windows XP это делается простым перетаскиванием этого файла в папку C:\Windows\Assembly. В других версиях придется использовать Gacutil.exe с параметром -i.

4. Далее создаем новую базу данных Firebird. В этом очень поможет IBExpert.

5. Скачиваем скрипт создания необходимой структуры базы данных по ссылке. Засовываем его  в IBExpert и выполняем. Если эта ссылка не будет работать, то есть эти скрипты на сайте sourceforge. Но там они в нескольких файлах. По первой ссылке скрипт объединен в один файл для вашего удобства.

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



6. Создайте новое приложение ASP.NET в Visual Studio. Версию Framework установите 4.

7. Добавьте ссылку на сборку FirebirdSql.Web.Providers.dll

8. Откройте файл web.config и замените его этот. Откорректируйте часть этого кода, согласно вашим настройкам базы данных Firebird (путь, пароль, имя пользователя).

9. Нажимайте F5 и начинайте отладку с широко открытыми глазами))).

10. Если возникнут ошибки: а) проверьте путь к базе данных Firebird и сравните его с настройками в web.config. б) проверьте чтобы обе сборки Firebird имели одинаковую версию 2.6.0

У кого ничего не получилось - вот ссылка на весь мой проект WebApplication1.
И ссылка на базу данных Firebird.
Вот и всё, счастлива. Вопросы и коменнты пишите ниже.

8 комментариев:

  1. ругается на это при выполнении:
    C:\Users\Jiri\Desktop\NETProvider\source\FirebirdSql\Data\FirebirdClient\FbConnection.cs

    ОтветитьУдалить
  2. Вы пробовали загрузить мои исходники по ссылкам выше? Они у вас работают?

    ОтветитьУдалить
  3. Да, всё скачал, загрузил, запустил отладку появилась страница где я указал имя пользователя, пароль, email. После кнопки Create User в студии вылезла ошибка, в которой студия не могла найти указанный выше файл. Скорее всего я что-то сделал не так, потому что такой путь (строка) был найден в файле "FirebirdSql.Data.FirebirdClient.pdb". Как быть дальше?

    ОтветитьУдалить
    Ответы
    1. Как один из вариантов - проверить местонахождение базы данных Firebird.
      Мой проект был настроен на базу данных по пути D:\ASP.NET.FDB

      Удалить
    2. да, ошибка была у меня, т.к. я не проимпортил DLL с помощью gacutil, а просто добавил их через reference. извиняюсь.

      Удалить
  4. Добрый день спасибо огромное за такой материал!!!!
    Все работает прекрасно!!!
    Только есть вопросик:
    как подключить чтоб провайдером был FireBird и использовалась табличка SESSIONS из вашей БД

    Еще раз спасибо за информацию

    ОтветитьУдалить
  5. Этот комментарий был удален автором.

    ОтветитьУдалить
  6. Ох, нашла как подключить:
    ()sessionState mode="Custom" customProvider="FbSessionProvider" useHostingIdentity="false"
    cookieless="false" regenerateExpiredSessionId="true" timeout="20"()
    ()providers()
    ()add name="FbSessionProvider"
    type="FirebirdSql.Web.Providers.FbSessionStateStore, FirebirdSql.Web.Providers,
    Version=2.6.0.0, Culture=neutral"
    passwordFormat="Clear"
    connectionStringName="SecurityConnectionString"
    applicationName="/"(/)
    (/)providers()
    (/)sessionState()

    Но ошибка не может преобразовать string в byte[].
    В интернете я нашла исходник этой FireBird.Web.Providers (http://sourceforge.net/p/webproviders/code/HEAD/tree/) и подключила к проекту его и отладила, оказывается он не дружил с string id, ладно привела его к типу byte[] и теперь он не жаловался, пока я не исправила в каждом методе, но потом появилась такая ошибка:

    Не удалось загрузить тип "System.Runtime.CompilerServices.ExtensionAttribute" из сборки "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

    У меня .NetFramework 4.0 приложение тоже, что делать?
    Помогите пожалуйста

    ОтветитьУдалить