C#学习教程:Azure移动服务,HttpClient,授权分享


Azure移动服务,HttpClient,授权

我可以使用.NET的HttpClient来访问Azure Mobile服务吗?

如何使用HttpClient对移动服务自带的自定义身份validation/授权模式进行身份validation ?

这总是返回401,因为我没有传递任何身份validation凭据:

var client = new HttpClient(); var response = client.GetAsync("http://localhost:49190/api/test").Result; 

此外,为什么我使用移动服务客户端 ,为什么我的应用程序密钥,主密钥或用户身份validation密钥总是返回(401)未授权?

客户:

 var mobileClient = new MobileServiceClient("http://localhost:49190/", "[my key]"); var response = mobileClient.InvokeApiAsync("test").Result; 

服务方面:

 [AuthorizeLevel(AuthorizationLevel.Application)] public class TestController : ApiController { public ApiServices Services { get; set; } // GET api/Test public string Get() { Services.Log.Info("Hello from custom controller!"); return "Hello"; } } 

“我可以使用.NET的HttpClient来访问Azure Mobile服务吗?” 简短的回答是肯定的。 简单的方法是将其添加到客户端的标头:

  var client = new HttpClient(); client.DefaultRequestHeaders.Add("X-ZUMO-APPLICATION", "[my key]"); 

但是要小心,如果你使用的是本地托管版本,你需要确保你…

  1. 强制服务认为它是托管的,以便启用身份validation。

    (在App_Start / WebApiConfig.cs中: config.SetIsHosted(true);

  2. 将应用程序密钥和主密钥添加到web.config:

         

如果没有#1,将完全忽略整个服务的身份validation,因此您不知道在客户端中添加身份validation的方式是否正常。 如果没有#2,您可以将密钥添加到客户端(您从Azure获得),但它始终会返回401.这可能是发布的第二个问题的答案,该问题涉及使用MobileServiceClient始终返回401。

最后,总共可以使用三种不同的标题。 您可以使用每个不同级别的授权。 从这个MSDN文档 :

作者说明:我个人很难让这个工作,并且对于这种特定的风格有限或缺少文档,我想写这个Q / A. 如果您认为我应该添加任何东西,请告诉我。

上述就是C#学习教程:Azure移动服务,HttpClient,授权分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959992.html

发表评论

邮箱地址不会被公开。 必填项已用*标注