【问题标题】:View DocumentDB Local Emulator http requests in Fiddler from .NET SDK从 .NET SDK 在 Fiddler 中查看 DocumentDB Local Emulator http 请求
【发布时间】:2023-03-16 11:15:01
【问题描述】:

我有一个使用 DocumentDB .NET SDK(最新版本 v 1.10)的 ASP.NET 应用程序。

我正在使用new local emulator

当应用程序在本地启动时,我无法看到我的 .NET SDK 向 Fiddler 中的本地模拟器发出的请求。但是,我可以在 Fiddler 中看到由我的浏览器中的 Web 应用程序“数据资源管理器”(随本地模拟器提供)对本地模拟器发出的请求。我还可以从远程 DocumentDB 端点(在 Azure 中)上本地部署的 Web 应用程序浏览 Fiddler DocumentDB 请求。

我怀疑在 .NET SDK 中设置了一些配置,以便 Fiddler 代理拦截请求。

【问题讨论】:

    标签: networking fiddler azure-cosmosdb


    【解决方案1】:

    您在连接到本地模拟器时是否使用直接模式?

    Fiddler 在使用直接连接时将无法拦截请求,因为它只能拦截 http 流量。将连接策略更改为网关应该允许提琴手拦截请求。

    【讨论】:

    • 在 C# 代码connectionPolicy.ConnectionMode = ConnectionMode.Gateway; connectionPolicy.ConnectionProtocol = Protocol.Https; 中更改了 DocumentDB 客户端的连接策略,但它并没有解决我的问题。
    【解决方案2】:

    如果您选择网关或 DirectHttps 模式,您可以使用 fiddler 查看请求和响应。 当您使用 .NET SDK 时,它不会自动定向到提琴手代理,因此您不会自动看到您的请求/响应。 您可以在应用配置中设置代理

     <system.net>
        <defaultProxy>
          <proxy
            usesystemdefault="False"
            bypassonlocal="True"
            proxyaddress="http://127.0.0.1:8888"/>
        </defaultProxy>
      </system.net>
    

    或者您可以使用https://localhost.fiddler,它将通过提琴手代理,以便捕获请求/响应。请注意,如果 fiddler 未运行,此选项将使请求失败。

    【讨论】:

    • 不适合我我也尝试将bypassonlocal设置为false
    • bypassonlocal 对 .NET 绕过“localhost”请求的代理没有影响。
    【解决方案3】:

    我们终于找到了一个解决方案,需要改变两点:

    • 在 documentdb 客户端实例集 connectionPolicy.EnableEndpointDiscovery = false; 中(不要将其推送到生产环境)

    • 并将documentdb端点url从https://localhost:8081替换为https://localhost.fiddler:8081

    【讨论】:

    • 已按照 Fiddler 的建议更改了主机名,但您禁用端点发现的建议非常有效,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多