Коннектор PostgreSQL + Npgsql + MVC и SimpleMembership Не работает

Я проверил соединение с базой данных без Websecurity, и оно работает. Я следовал руководству Брайса Лэмбсона http://brice-lambson.blogspot.com.es/2012/10/entity-framework-on-postgresql.html

Но когда я использую

WebSecurity.InitializeDatabaseConnection("myContext", "UserProfile", "UserId", "UserName", autoCreateTables: false);

Я получаю это исключение:

System.InvalidOperationException was caught
  HResult=-2146233079
  Message=No user table found that has the name "UserProfile".
  Source=WebMatrix.WebData
  StackTrace:
       in WebMatrix.WebData.SimpleMembershipProvider.ValidateUserTable()
       in WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean createTables)
       in WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables)
       in WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName, String userTableName, String userIdColumn, String userNameColumn, Boolean autoCreateTables)
       in Glink.Filters.InitializeSimpleMembershipAttribute.SimpleMembershipInitializer..ctor() en c:\Users\...\InitializeSimpleMembershipAttribute.cs:line 46
  InnerException: Npgsql.NpgsqlException
       HResult=-2147467259
       Message=ERROR: 42601: Syntax error near «[»
       Source=Npgsql
       ErrorCode=-2147467259
       BaseMessage=Syntax error near «[»
       Code=42601
       Detail=""
       ErrorSql=SELECT [UserId] FROM [UserProfile] WHERE (UPPER([UserName]) = ((E'Z')))
       File=src\backend\parser\scan.l
       Hint=""
       Line=1002
       Position=8
       Routine=scanner_yyerror
       Severity=ERROR
       Where=""
       StackTrace:
            in Npgsql.NpgsqlState.<ProcessBackendResponses_Ver_3>d__a.MoveNext()
            in Npgsql.ForwardsOnlyDataReader.GetNextResponseObject()
            in Npgsql.ForwardsOnlyDataReader.GetNextRowDescription()
            in Npgsql.ForwardsOnlyDataReader.NextResult()
            in Npgsql.ForwardsOnlyDataReader..ctor(IEnumerable`1 dataEnumeration, CommandBehavior behavior, NpgsqlCommand command, NotificationThreadBlock threadBlock, Boolean synchOnReadError)
            in Npgsql.NpgsqlCommand.GetReader(CommandBehavior cb)
            in Npgsql.NpgsqlCommand.ExecuteScalar()
            in WebMatrix.Data.Database.QueryValue(String commandText, Object[] args)
            in WebMatrix.WebData.DatabaseWrapper.QueryValue(String commandText, Object[] parameters)
            in WebMatrix.WebData.SimpleMembershipProvider.GetUserId(IDatabase db, String userTableName, String userNameColumn, String userIdColumn, String userName)
            in WebMatrix.WebData.SimpleMembershipProvider.ValidateUserTable()
       InnerException: 

Я предполагаю, что NpgSql не может быть подготовлен для работы с SimpleMerbership, но я хотел бы знать, пробовал ли кто-нибудь из вас это. Спасибо!!


person doublep    schedule 24.07.2013    source источник


Ответы (3)


Вам следует попробовать AspSQLProvider Даниэля Наука: http://dev.nauck-it.de/projects/show/aspsqlprovider

Это реализация PostgreSQL поставщика членства, роли, профиля и состояния сеанса ASP.NET 2.0+.

Я надеюсь, что это помогает.

person Francisco Junior    schedule 02.08.2013

Я бы посоветовал вам попробовать изменить «autoCreateTables: false» на «autoCreateTables: true».

person wintermute    schedule 17.09.2013

Не работает с postgres, потому что он вставляет скобки ([ ... ]) во встроенный SQL:

https://github.com/aspnetwebstack/aspnetwebstack/blob/master/src/WebMatrix.WebData/SimpleMembershipProvider.cs

person Eyeless Whim    schedule 12.12.2013