使用应用权限调用Microsoft Graph API搜索租户列表项遇Region必填错误,求C#解决方案
问题描述
我尝试访问Microsoft Graph API以搜索租户中的列表项,调用用户或组的GET请求时一切正常。但按照微软官方文档使用HttpClient发送搜索POST请求时,收到如下错误:
Failed to call the web API: BadRequest
Content: {"error":{"code":"System.Exception","message":"SearchRequest Invalid (Region is required when request with application permission.)\r\nRegion is required when request with application permission.","target":"","details":null,"warnings":null,"level":"Error","httpCode":400},"Instrumentation":{"TraceId":null}}
我在.NET Core中测试也出现相同错误,但将访问码粘贴到HTML文件中用Ajax调用搜索API却能正常工作。请问我的C#代码中缺少了什么?
解决方案
错误提示已经明确:使用应用权限调用搜索API时必须指定Region参数。
Ajax调用正常是因为你用的是委派权限(基于用户上下文),而C#代码采用的是应用权限模式,两种模式对搜索API的要求不同。
具体修正步骤:
- 在POST请求的JSON请求体中,为每个搜索请求添加
region字段,值设置为你的租户所在区域(例如"na"代表北美、"eu"代表欧洲,根据实际情况选择) - 确保请求体结构正确,示例如下:
{ "requests": [ { "entityTypes": ["listItem"], "query": { "queryString": "你的搜索关键词" }, "region": "na" } ] }
- 检查C#代码中是否正确序列化了包含
region字段的请求对象,避免序列化过程中丢失该字段。
内容的提问来源于stack exchange,提问作者saurabh
相关产品推荐
相关产品推荐

