在ASP.NET中调用Microsoft Graph API搜索邮件时处理双引号问题
解决ASP.NET中Microsoft Graph API搜索URL的反斜杠问题
你的问题出在C#字符串的转义处理上——当前写法会把转义用的反斜杠也包含在最终发送给API的URL里,而Graph API需要的是不带反斜杠的引号格式,因此返回了BadRequest。
下面是几种可行的解决方法:
方法1:使用C#逐字字符串(@前缀)
逐字字符串会忽略转义字符,只需用两个连续双引号表示一个实际的双引号,构造出的URL不会包含多余反斜杠:
sRestURL = @"https://graph.microsoft.com/v1.0/users/USER@MAILBOX.COM/mailFolders/inbox/messages?$search=""from:greet""&$expand=singleValueExtendedProperties($filter=Id eq 'LONG 0x0E08')&$count=true";
这段代码生成的URL中,$search参数部分为"from:greet",完全符合Graph API的要求。
方法2:手动修正转义逻辑
如果不想用逐字字符串,可以调整引号的转义方式,确保最终字符串里的双引号无需额外嵌套转义:
sRestURL = "https://graph.microsoft.com/v1.0/users/USER@MAILBOX.COM/mailFolders/inbox/messages?$search=\"from:greet\"&$expand=singleValueExtendedProperties($filter=Id eq 'LONG 0x0E08')&$count=true";
之前的错误是因为在from:后额外添加了一层带转义的双引号,导致URL中出现多余反斜杠,修正后即可避免这个问题。
额外注意事项
使用$count=true时,必须在请求头中添加ConsistencyLevel: eventual,否则Graph API同样会返回错误,这是容易忽略的细节。
内容的提问来源于stack exchange,提问作者Frederik Gysel
相关产品推荐
相关产品推荐

