使用自定义登录提供程序发布 Azure 移动服务(.NET 支持)

本文关键字:服务 移动 Azure NET 支持 自定义 登录 程序 | 更新日期: 2023-09-27 18:35:47

我一直在尝试添加一种让人们登录我的通用Windows应用程序的方法,并成功地允许他们通过Microsoft,Google,Twitter和Facebook登录(只是因为这些直接由Azure支持),但我似乎无法正确设置自定义登录提供程序。

我尝试按照本教程进行操作。它在本地工作,但一旦发布到 Azure,就会失败。

以下是日志中的第一行:Exception=System.NotSupportedException:没有与基元类型"SByte"的概念端类型"SByte"对应的存储类型。

我假设问题在于控件如何存储用户:

todoContext context = new todoContext();
context.Users.Add(newUser);
context.SaveChanges();

这会将其保存到本地数据库还是其他数据库,而不是 Azure 上的数据库。如果是这样,如何让它将用户存储到 Azure 数据库?

编辑:其次,虽然我认为我已经找到了问题。再次尝试并将本地移动服务连接到我的 azure 数据库后,出现此错误:

{"message":"发生错误。","exceptionMessage":"没有与基元类型"SByte"的概念端类型"SByte"对应的存储类型。","exceptionType":"System.NotSupportedException","stackTrace":"

我现在假设它无法创建与我的 User 类对应的表:

public class User : EntityData
    {
        public string Username { get; set; }
        public byte[] Salt { get; set; }
        public byte[] SaltedAndHashedPassword { get; set; }
    }

虽然,我不知道为什么当我已经有一张桌子时它会尝试创建一个表......我必须更改设置吗?

否则。。。

如何将盐和

盐和哈希密码存储在我的数据库中?我是否必须将它们转换为字符串,然后以某种方式将它们重新转换回来?这可能吗?

另外,为什么它能够在本地而不是在 Azure 上为用户创建表?

编辑:

我的移动服务一定有问题,因为当我尝试使用表 api 来获取随它一起安装的 todoItems 时,它返回了我上面提供的相同错误。

使用自定义登录提供程序发布 Azure 移动服务(.NET 支持)

显然,

这仅在您对移动服务采用代码优先方法时才有效。

我通过创建新的移动服务并将其连接到新数据库来修复它。然后,我通过移动服务在门户上提供的下载链接创建了一个新的移动服务项目。然后,我创建了我需要的所有模型作为类,更新了 DataContext,并创建了所有控制器。

即使我已经让它工作,我仍然想弄清楚如何使用数据库优先方法做到这一点。