运行此查询:
“ https://someurl.com/graph/users/%24myuser%40myorg.org/licenseDetails?$ select = skuId,skuPartNumber”
结果:
“请求URI无效。由于段'users'引用了一个集合,因此它必须是请求URI中的最后一个段,或者它后面必须是可以绑定到它的函数或操作,否则所有中间段必须引用单一资源”
经过一番摸索,我设法在myuser之前添加了第二个Dollarsign(%24)使其工作。
即使在https://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/abnf/odata-abnf-construction-rules.txt,也似乎记录不清。
是否有一个c#库可以正确地为odata转义给定的文字字符串,而不是每个人都不时手动地遇到问题?
对于这些似乎没有记录的特殊情况,该文档是否应该得到改进?
答案 0 :(得分:0)
如乔纳森·蔡斯(Jonathon Chase)所述,您可以使用/users('$myuser@myorg.org')/licenseDetails作为替代语法。
答案 1 :(得分:0)
OData URL中的$
前缀通常表示您将要使用系统查询选项,例如$filter
,$select
或$expand
。这很可能导致您的密钥被这样解释。
由于您正在使用实体键访问特定实体,然后导航到其导航属性之一,因此通常可以直接在实体的括号内提供键。当您没有组合键时,这很简单,如下所示:
/users('my-key-value')
然后,您可以按照以前尝试的方式,展开特定的导航属性并选择到特定的属性(假设实现与此相符),从而导致
/users('$myuser@myorg.org')/licenseDetails?$select=skuId,skuPartNumber