从 .NET SDK 在 Fiddler 中查看 DocumentDB Local Emulator http 请求

View DocumentDB Local Emulator http requests in Fiddler from .NET SDK

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

我正在使用 new local emulator

当应用程序在本地启动时,我无法在 Fiddler 中看到我的 .NET SDK 向本地模拟器发出的请求。但是,我可以在 Fiddler 中看到浏览器中 Web 应用程序 "Data explorer"(本地模拟器附带)对本地模拟器的请求。我还可以在远程 DocumentDB 端点(Azure 中)上本地部署的 Web 应用程序中浏览 Fiddler DocumentDB 请求。

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

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

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

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

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

或者您可以使用 https://localhost.fiddler,它将通过 fiddler 代理,以便捕获 request/reponse。请注意,如果 fiddler 不是 运行.

,此选项将使请求失败

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

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

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