在 .NET 中使用 CosmosDB 代理

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

我的 .NET 应用程序存在代理问题。 当在公司代理后面本地运行它时,我无法访问 Cosmos DB,因为它接收来自我的 VPN IP 而不是白名单代理服务器 IP 的调用。

我使用 proxydetox 管理我的代理设置,该代理在 localhost:3128 上运行,无需身份验证。本地主机也在我的 MacOS 代理设置中设置,因此使用浏览器或像curl这样的工具使用代理服务器IP。

如何让我的 dotnet 应用程序使用代理设置?在 .NET 的文档中,它指出它通常使用系统范围的代理设置,但情况似乎并非如此。

此处使用代理设置的一种方法是使用带有

HttpClient
属性的
WebProxy
。如何让 Cosmos 或 Logger 服务使用此
HttpClient
或代理设置?
Startup.cs
看起来像这样:

public class Startup
 {
public IConfiguration Configuration { get; }
private readonly IWebHostEnvironment _env;

public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
    Configuration = configuration;
    _env = env;
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    
 // other services...

    services.AddCosmosDb(Configuration);
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//...
}

appsettings.json 包含以下内容:

    {
  "CosmosOptions": {
    "AccessKey": "<Your Cosmos DB Access Key Here>",
    "EndpointUri": "<Your Cosmos DB Endpoint URI Here>",
    "DatabaseName": "MyBackend",
    "DirectConnection": true,
    "HasBulkExecutionEnabled": false,
    "MaxRetryWaitTimeInSeconds": 30,
    "Documents": [
      {
        "Name": "Feature",
        "TimeToLiveDays": -1,
        "PartitionKeyName": "pk",
        "DocumentClass": "Feature",
        "SetOfferThroughputOnStartup": false
      }
    ]
  }
}
asp.net azure .net-core proxy azure-cosmosdb
1个回答
0
投票

当您创建

CosmosClient
时,您可以传递
CosmosClientOptions

您可以使用 CosmosClientOptions.WebProxy 属性,或者,如果您有自定义 HttpClient,则可以使用 CosmosClientOptions.HttpClientFactory

这是为代理场景定制 HttpClient 的两个场所。

© www.soinside.com 2019 - 2024. All rights reserved.