如何在 MSGraph .net SDK 中设置用户代理字符串

问题描述 投票:0回答:2

我正在使用 C# 中的 MSGraph SDK v4.27.0 读取客户电子邮件帐户。它工作正常,但一位客户坚持使用允许列表来访问 EWS 电子邮件。这授予对提供用户代理字符串的应用程序的访问权限,但我如何使用 SDK 调用将其包含在 MSGraph 标头中?
代码取自 MS 示例

var scopes = new[] { "User.Read","Mail.ReadWrite","Mail.ReadWrite.Shared" };

var options = new TokenCredentialOptions
            {
                AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
            };

var userName = strAccount;

var password = strPWD ;


var userNamePasswordCredential = new UsernamePasswordCredential(
                userName, password, tenantId, theClientId, options);


var graphClient = new GraphServiceClient(userNamePasswordCredential, scopes);

try
{
   rootFolder = await graphClient.Me.MailFolders["msgfolderroot"]
               .Request()
               .GetAsync();
}..
user-agent microsoft-graph-api
2个回答
0
投票

最终从 GitHubs 文档中找到了答案,尽管确实进行了一些实验发现标头选项名称是“User-Agent” 您创建一个选项列表并添加用户代理选项

 List<Option> theOptions = new List<Option>();
        theOptions.Add(new HeaderOption("User-Agent", "MyUserAgentName"));

然后每个 .Request() 调用都必须将选项作为参数,例如

 rootFolder = await graphClient.Me.MailFolders["msgfolderroot"]
                .Request(theOptions)
                .GetAsync();

0
投票

注意 v5 中的这个变化

为了传递标头,不再使用 HeaderOption 类。使用 requestConfiguration 修饰符添加标头,如下所示

var user = await graphServiceClient
.Users["{user-id}"]
.GetAsync(requestConfiguration => requestConfiguration.Headers.Add("ConsistencyLevel","eventual"));
© www.soinside.com 2019 - 2024. All rights reserved.