Azure 移动服务:如何将自定义 header 注入请求?
Azure Mobile Services: how to inject custom header into request?
我在 Xamarin.iOS 应用程序中使用 Azure 移动服务。
我的服务需要从客户端发送自定义 header。
为了发送这个,我创建了我自己的消息处理程序,它派生自`NativeMessageHandler(ModernHttpClient 的一部分):
this.client = new MobileServiceClient (Constants.ApplicationURL, Constants.GatewayURL, new CustomMessageHandler ());
为了让我的 header 在那里,处理程序如下所示:
public class CustomMessageHandler: NativeMessageHandler
{
protected override Task<System.Net.Http.HttpResponseMessage> SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
request.Headers.Add ("customHeader", "headerValue");
return base.SendAsync (request, cancellationToken);
}
}
问题是当我的服务部署到 Azure 时,header 似乎没有到达服务器。 当 运行 在 VisualStudio 本地 时有效。如果我在我的处理程序中放置一个断点,它就会被击中;所以 header 真的被添加了。
为什么它可以在本地运行而不能在 Azure 上运行?
答案是:哦!
我为我的 Azure 应用程序启用了 "Authentication"。因此我会为每个请求得到一个 401。这与我的处理程序无关。关掉它,它就像魅力一样。
我在 Xamarin.iOS 应用程序中使用 Azure 移动服务。 我的服务需要从客户端发送自定义 header。
为了发送这个,我创建了我自己的消息处理程序,它派生自`NativeMessageHandler(ModernHttpClient 的一部分):
this.client = new MobileServiceClient (Constants.ApplicationURL, Constants.GatewayURL, new CustomMessageHandler ());
为了让我的 header 在那里,处理程序如下所示:
public class CustomMessageHandler: NativeMessageHandler
{
protected override Task<System.Net.Http.HttpResponseMessage> SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
request.Headers.Add ("customHeader", "headerValue");
return base.SendAsync (request, cancellationToken);
}
}
问题是当我的服务部署到 Azure 时,header 似乎没有到达服务器。 当 运行 在 VisualStudio 本地 时有效。如果我在我的处理程序中放置一个断点,它就会被击中;所以 header 真的被添加了。
为什么它可以在本地运行而不能在 Azure 上运行?
答案是:哦!
我为我的 Azure 应用程序启用了 "Authentication"。因此我会为每个请求得到一个 401。这与我的处理程序无关。关掉它,它就像魅力一样。