Что делают универсальные провайдеры ASP.NET активными, а провайдеры SQL по умолчанию - нет?
Внутри файла readme пакета NuGet поставщиков ASP.NET Universal эта цитата
Классы SqlMembershipProvider, SqlRoleProvider, SqlProfileProvider, поставляемые в ASP.NET до версии 4, поддерживают только Microsoft SQL Server и Microsoft SQL Server Express. Они не поддерживают новые предложения, такие как Microsoft SQL Azure и Microsoft SQL Server Compact.
Однако когда я запускаю пользовательские сценарии aspnet_regsql для Sql Azure http://support.microsoft.com/kb/2006191 и затем указываю свой web.config на базу данных SQL Azure, членство в ASP.NET, кажется, работает правильно.
Может кто-нибудь сказать мне, что именно не работает с SQL Azure, что позволяют универсальные провайдеры?
2 ответа
Основное отличие, насколько я могу судить, заключается в том, что при подключении к Sql Azure необходимо реализовать логику повторных попыток. Исходные поставщики не будут повторять попытки при возникновении ошибки подключения, и это будет происходить время от времени с SQL Azure.
Кроме того, исходные поставщики не создают исключений, содержащих полные коды ошибок SQL, поэтому, если регулируется база данных, вы не будете знать, какое правило регулирования применяется. По крайней мере, это то, что мне говорит команда поддержки SQL Azure - по этой причине я сейчас нахожусь в процессе обновления.
Предупреждение: универсальные провайдеры, похоже, используют схему базы данных, отличную от исходных провайдеров, поэтому вам нужно будет перенести данные о членстве. Если вы начинаете новый проект, вам будет гораздо проще сменить этих поставщиков, прежде чем вы начнете жить с реальными пользователями!
Универсальные провайдеры позволяют вам использовать систему членства asp.net в sqlazure, а также сделать реализацию SQL независимой. Вы можете использовать одно и то же приложение с помощью универсальных провайдеров и изменить источник данных на SQL Server/sqlexpress/sqlce/localdb и т. д.