Azure REST端点报告内部地址

时间:2014-09-27 10:36:32

标签: wcf rest azure azure-web-roles

我制作了自定义REST API http://127.0.0.1:81/Interfaces/RestApiExt.svc/Custom1/username/Admin。不幸的是,System.ServiceModel.Web操作WebOperationContext.Current.IncomingRequest报告了内部端点地址和套接字,在我的情况下http://a2123-9023:82/Interfaces/RestApiExt.svc/Custom1/username/Admin,这很糟糕,因为我在主机端进行了一些OAuth身份验证,因此客户端和主机URL必须匹配才能获得匹配的OAuth签名。如何获取客户端发送的URL而不是主机上的内部端点地址?

1 个答案:

答案 0 :(得分:0)

通过使用包含" external"的主机HTTP标头,我找到了一种解决方法。地址而不是处理内部端点地址。仅在我的开发人员环境中测试过它,但我认为它也适用于Azure云:

    public bool Authenticate(string username, IncomingWebRequestContext context)
    {
       var endPointUri = context.UriTemplateMatch.RequestUri;
       var originalUrl = endPointUri.Scheme + "://" + context.Headers["Host"] 
          + endPointUri.PathAndQuery;
       // .. OAuth specific code follows
    }