2016-01-01 7 views
1

У меня был проект, выполненный в MSSQL. Я перенес MSSQL на MySql, потому что я думал, что Webmatrix.WebData также поддержит MySql. Инициализация WebSecurity прошла успешно.Webmatrix.WebData.WebSecurity с MySql не работает. Бросание ошибки синтаксиса sql в WebSecurity.UserExists() check

if (!WebSecurity.Initialized) 
    { 
      securityService.Initialize(
      "sqlserver", 
      "UserProfile", 
      "UserId" 
      "UserName"); 
     };` 

Выше кода успешно выполнен. Но если не удается выполнить следующую часть,

if (!WebSecurity.UserExists("user")) 
     { 
      WebSecurity.CreateUserAndAccount("user", "password"); 
     } 

Проверка WebSecurity.UserExists("user") не удается. Это ошибка Сообщение-

Исключение типа «MySql.Data.MySqlClient.MySqlException» произошло в MySql.Data.dll, но не был обработан в пользовательском коде

Дополнительная информация: У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с [UserId] FROM [UserTable] WHERE (UPPER ([UserName]) = UPPER («пользователь»)) по строке 1

Пожалуйста, помогите мне с этой проблемой.

ответ

0

WebSecurity, поставляемый с ASP.Net (тот, который используется в вашем коде выше) имеет встроенный в код синтаксис Microsoft T-SQL. Между синтаксисом MySQL и MSSQL мало различий, что, вероятно, объясняет ошибку.

От ошибки, показанной, я могу видеть, метод CreateUserAndAccount в WebSecurity каким-то образом пытается выполнить в Т-SQL заявление .... [UserId] FROM [UserTable] WHERE (UPPER([UserName]) = UPPER('user')) однако, в то время как это будет работать в MSSQL, квадратные скобки "[" и "]" бы привести к возникновению ошибок в MySQL.

Работать вокруг будет MySql.Web.Security.MySqlWebSecurity.CreateUserAndAccount("user", "password"), из-за чего вы можете добавить заявление using или использовать его таким образом.

see link