Kar*_*rdt 5 c# http-proxy microsoft-graph-api
我需要通过代理中继 C# Graph-Sdk 发出的 HTTP 请求。
在文档中,我找不到有关代理设置的任何信息。我目前找到的唯一解决方法是更改全局代理设置:
System.Net.GlobalProxySelection.Select = proxy;
or
System.Net.WebRequest.DefaultWebProxy = proxy;
Run Code Online (Sandbox Code Playgroud)
可悲的是,在我的情况下,如果不将所有与图形相关的功能移动到一个单独的进程中,这是不可能的(因为主进程的其余部分需要在没有代理的情况下运行)。
所以我的问题是:
sdk 中是否有对代理设置的官方支持?
是否计划为未来的 sdk 版本支持代理设置?
您可以在实例化 GraphServiceClient 时设置代理。
2021 年 6 月 9 日更新
现在有一个更好的方法是使用 GraphClientFactory。
HttpClient httpClient = GraphClientFactory.Create(GetClientCredentialProvider(), "v1.0", "Global", new WebProxy(""));
var graphServiceClient = new(httpClient);
Run Code Online (Sandbox Code Playgroud)
旧答案
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |