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

时间:2015-01-01 21:11:54

标签: c# asp.net authentication azure azure-mobile-services

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

我试过关注this tutorial。它在本地工作,但一旦发布到azure就会失败。

以下是日志中的第一行:Exception = System.NotSupportedException:没有与原始类型“SByte”的概念侧类型“SByte”对应的商店类型。

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

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

这是否将它保存到本地数据库或其他东西而不是Azure上的数据库。如果是这样,我如何将用户存储到azure数据库?

编辑: 第二,虽然我认为我找到了问题。再次尝试并将本地移动服务连接到我的azure数据库后,我收到了这个错误:

{“message”:“发生错误。”,“exceptionMessage”:“没有与原始类型'SByte'的概念边类型'SByte'对应的商店类型。”,“exceptionType”:“系统.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来获取它随附的todoItem时,它返回了我上面提供的相同错误。

1 个答案:

答案 0 :(得分:0)

显然,这只适用于您首先使用代码进入移动服务的方法。

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

即使我已经开始工作,我仍然想知道如何使用数据库第一种方法来做到这一点。