2013-10-24 71 views
9

我在我的索引控制器中調用了一個API,並且一切正常,只有當我打開Fiddler時。爲什麼在ASP.NET中調用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); 
} 

如果我關閉提琴手我收到以下錯誤:

No connection could be made because the target machine actively refused it 127.0.0.1:8888

有一些配置我必須包括,讓調用API的作品,即使我沒有提琴手開放。

+3

127.0.0.1:8888是您的小提琴手代理地址。不知何故,你的ASP.Net應用程序仍在使用你的提琴手代理作爲它的http代理。找出在哪裏,並關閉它。它可能只需要您重新啓動IIS。 – Aron

+0

是的你是對的。我使用了RasmusW提出的解決方案,並且工作。 – mgiota

回答

12

檢查web.config是否有任何代理配置,並檢查您是否配置了.net可能使用的系統默認代理。 您可以添加到您的web.config禁用代理配置:

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

謝謝。這解決了我的問題:-) – mgiota

+0

謝謝。我這樣做了,但我只是想知道這個代理設置在哪裏。因爲我的Internet Explorer設置不指向任何代理。發現它在C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config,我從那裏刪除它,一切正常。我認爲Fiddler增加了這個,因爲我不記得加入它!希望這不會破壞任何提琴手的功能! –

+0

我不認爲提琴手將它添加到machine.config。實際上,Fiddler博客有一個關於[如何手動添加]的條目(http://www.telerik.com/blogs/capturing-traffic-from-.net-services-with-fiddler)。 – RasmusW

相關問題