我正在尝试在 Web 服务中实现 OAuth,例如:
http://www.codeproject.com/Tips/372422/Secure-WCF-RESTful-service-using-OAUTH
每次,当 Authenticate 方法触发时,WebOperationContext.Current.IncomingRequest
存在,但 UriTemplateMatch
为 null。即使使用 WCF 测试客户端时也是如此,因此我的客户端应用程序不是问题。最终,我需要访问 UriTemplateMatch
下的 QueryParameters
。
在Authenticate
方法中,这是代码中断的地方:
NameValueCollection pa = context.UriTemplateMatch.QueryParameters;
寻找与此不同的解决方案,以便所有内容都在一个请求中处理:
此外,与解决方案一样,我正在寻找仅在 WCF 服务的情况下 UriTemplateMatch 为 null 的原因。有数百篇关于此问题存在的文章,但我还没有找到好的解决方案和/或解释。我想我的 web.config
中可能缺少某些内容。
最佳答案
看来这个解决方案需要像这样的来电:
http://localhost:49262/TestProject/Service.svc/user/123?oauth_consumer_key=key&oauth_nonce=10a33ed37b549301644b23b93fc1f1c5&oauth_signature=cUobFDxVB5wjPe9X2XICJ6awmnE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1289976718&oauth_version=1.0
附加oauth参数有两种方法,一种是通过 header ,另一种是通过查询字符串,两者都有效,所以我选择在查询字符串中附加oauth参数。如果这些 oauth 参数位于 header 中,则从 IncomingWebRequestContext.Headers 检索它们没有任何问题
这个解决方案不是我提供的。检查这个link .
关于wcf - WCF 服务中的 IncomingWebRequestContext.UriTemplateMatch null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580388/