【问题标题】:Why calling API in ASP.NET works only if I have Fiddler open?为什么只有在打开 Fiddler 的情况下才能在 ASP.NET 中调用 API?
【发布时间】:2013-10-24 08:42:30
【问题描述】:

我正在像这样在我的索引控制器中调用一个 API,并且一切正常,前提是我打开了 Fiddler。

public ActionResult Index()
{
    Base model = null;
    var client = new HttpClient();
    var task =
        client.GetAsync(
        "http://example.api.com/users/john/profile")
        .ContinueWith((taskwithresponse) =>
        {
            var response = taskwithresponse.Result;
            var readtask = response.Content.ReadAsAsync<Base>();
            readtask.Wait();
            model = readtask.Result;
        });
    task.Wait();

    return View(model);
}

如果我关闭 Fiddler,我会收到以下错误:

无法建立连接,因为目标机器主动 拒绝它 127.0.0.1:8888

是否有一些配置我必须包括在内,以便调用 API 工作,即使我没有打开 Fiddler。

【问题讨论】:

  • 127.0.0.1:8888 是您的提琴手代理地址。不知何故,您的 ASP.Net 应用程序仍在使用您的提琴手代理作为其 http 代理。弄清楚在哪里,然后将其关闭。它可能只需要您重新启动 IIS。
  • 是的,你是对的。我使用了 RasmusW 提出的解决方案,它奏效了。

标签: c# asp.net asp.net-web-api fiddler


【解决方案1】:

检查 web.config 是否有任何代理配置,并检查您是否配置了 .net 可能使用的系统默认代理。 您可以将此添加到您的 web.config 以禁用代理配置:

    <system.net>
      <!-- set enabled to true to use the system default proxy -->
      <defaultProxy enabled="false" />
    </system.net>

【讨论】:

  • 谢谢。我这样做了,但后来我只想知道这个代理设置在哪里。因为我的 Internet Explorer 设置没有指向任何代理。在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 中找到它,我从那里删除了它,一切正常。我认为 Fiddler 已经添加了这个,因为我根本不记得添加它! ...希望这不会破坏任何提琴手功能!
  • 我不认为 Fiddler 将它添加到 machine.config 中。实际上,Fiddler 的博客上有一条关于 how to add it manually 的条目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2016-12-05
相关资源
最近更新 更多