我需要通过代理中继 C# Graph-Sdk 发出的 HTTP 请求。
在文档中我找不到有关代理设置的任何信息。
我目前发现的唯一解决方法是更改全局代理设置:
System.Net.GlobalProxySelection.Select = proxy;
or
System.Net.WebRequest.DefaultWebProxy = proxy;
可悲的是,在我的情况下,如果不移动所有图表,这是不可能的
相关功能放入单独的进程中(因为主进程的其余部分需要在没有代理的情况下运行)。
所以我的问题是:
sdk 中是否有对代理设置的官方支持?
未来的 sdk 版本是否计划支持代理设置?
您可以在实例化 GraphServiceClient 时设置代理。
更新 2021 年 6 月 9 日
现在有一种更好的方法,即使用 GraphClientFactory。
HttpClient httpClient = GraphClientFactory.Create(GetClientCredentialProvider(), "v1.0", "Global", new WebProxy(""));
var graphServiceClient = new(httpClient);
旧答案
System.Net.Http.HttpClientHandler httpClientHandler = new System.Net.Http.HttpClientHandler()
{
AllowAutoRedirect = false,
Proxy = new WebProxy() // TODO: Set your proxy settings.
};
HttpProvider httpProvider = new HttpProvider(httpClientHandler, true);
GraphServiceClient client = new GraphServiceClient("https://graph.microsoft.com/v1.0",
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
var token = await goGetSomeTokenNow();
requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", token);
}), httpProvider);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)