繁体   English   中英

使用MySql的Webmatrix.WebData.WebSecurity无法正常工作。 WebSecurity.UserExists()检查中引发SQL语法错误

[英]Webmatrix.WebData.WebSecurity with MySql is not working. Throwing sql syntax error in WebSecurity.UserExists() check

我有一个用MSSQL完成的项目。 我将MSSQL迁移到MySql,因为我认为Webmatrix.WebData也将支持MySql。 WebSecurity初始化成功。

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

以上代码成功执行。 但是如果无法执行以下部分,

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

检查WebSecurity.UserExists("user")失败。 这是错误消息-

MySql.Data.dll中发生类型为'MySql.Data.MySqlClient.MySqlException'的异常,但未在用户代码中处理

附加信息:您的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以在第1行的'[UserId] FROM [UserTable] WHERE(UPPER([UserName])= UPPER('user'))'附近使用正确的语法

请帮我解决这个问题。

ASP.Net附带的WebSecurity(上面的代码中使用的一种)在代码中嵌入了一些Microsoft T-SQL语法。 MySQL语法和MSSQL之间几乎没有区别,这可能是导致错误的原因。

从显示的错误中,我可以看到WebSecurity中的CreateUserAndAccount方法以某种方式试图执行T-SQL语句.... [UserId] FROM [UserTable] WHERE (UPPER([UserName]) = UPPER('user'))但是,尽管这在MSSQL中有效,但方括号"[""]"会导致MySQL错误。

解决方法是使用MySql.Web.Security.MySqlWebSecurity.CreateUserAndAccount("user", "password") ,原因是,您可以添加using语句或以这种方式使用它。

见链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM