我制作了自定义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而不是主机上的内部端点地址?
答案 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
}