繁体   English   中英

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

[英]Publishing Azure Mobile Service with Custom Login Provider (.NET Backed)

我一直在尝试为人们添加一种登录我的通用Windows应用程序的方法,并成功地允许他们通过Microsoft,Google,Twitter和Facebook登录(仅因为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” ,“堆栈跟踪”:”

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

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

虽然,我不知道为什么我已经有一个表时为什么要尝试创建表...是否需要更改设置?

除此以外...

如何将Salt和SaltedAndHashedPassword存储在数据库中? 我是否必须将它们转换为字符串,然后以某种方式再次将其转换回? 那有可能吗?

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

编辑:

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

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

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

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

暂无
暂无

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

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