[英]Can't get Fiddler to capture HttpClient web api calls from MVC with localhost different port
另一個提琴手無法獲取帖子。
與此SO Post類似,我花了兩個小時閱讀和嘗試不同的解決方案,但沒有一個使我看到我的提琴手Web api流量。
順便說一句,我的代碼正在工作,我只是專注於讓提琴手向我展示api調用。
我將描述我的設置,然后再嘗試。
我的Web API是在端口63381上運行的單獨的MVC 6,EF 7項目
我的ASP.NET MVC 5 Web客戶端項目在以下端口上運行:59722
mvc客戶端中的典型動作控制器:
//Controller CTOR
public ClientController()
{
client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:63381/api/MyApi");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
//Action within ClientController
public async Task<JsonResult> AddNewSubCategory()
{
HttpResponseMessage responseMessage = await client.PostAsJsonAsync(url2, content);
if (responseMessage.IsSuccessStatusCode)
{
return Json("[{Update Success}]", JsonRequestBehavior.AllowGet);
}
return Json("[{Error Updating}]", JsonRequestBehavior.AllowGet);
}
}
將塊添加到32和62 machine.config。 重新啟動Visual Studio中沒有重新啟動計算機或任何其他服務。 這沒有用。
將塊添加到客戶端web.config中,此操作不起作用。
將localhost更改為machinename:port具體來說,我將http:// localhost:63381 / api / MyApi更改為http:// gpgvm-pc:63381 / api / MyApi
使用以下命令修改了Global.asax:
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate {return true;});
提琴手自定義規則
反向代理
設置提琴手在另一個端口上偵聽。
至此我投降了。 在我看來,#1應該可以捕獲所有內容,但是顯然我仍然在做錯什么,因為我可以讓提琴手捕獲一個或另一個,而不是客戶端取消向客戶端的請求???
更新:
我的機器被鎖定,重新啟動后,我開始看到api調用,所以這個問題與我的機器有關。 很抱歉打擾。
問題很可能是您使用以特殊方式處理的本地主機。
嘗試使用計算機名稱或您的IP(不要使用127.0.0.1)。
該文檔也包含有關此信息:
http://docs.telerik.com/fiddler/Observe-Traffic/Troubleshooting/NoTrafficToLocalhost
如果您嘗試在api中執行特定操作,則在webapi配置中使用該代碼
public static void Register(HttpConfiguration config)
{
//config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "api/{controller}/{id}",
// defaults: new { id = RouteParameter.Optional });
config.Routes.MapHttpRoute("API Default", "api/{controller}/{action}/{id}",
new { id = RouteParameter.Optional });
}
您在其中調用您的api的這段代碼。
public ActionResult ClientController(model content)
{
try
{
HttpClient client = new HttpClient("http://localhost:63381/");
client.BaseAddress = new Uri();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PostAsJsonAsync("api/MyApi/url2", content).Result;
if (response.IsSuccessStatusCode)
{
return Json(new { code = 0, message = "Success" });
}
else
{
return Json(new { code = -1, message = "Failed" });
}
}
catch (Exception ex)
{
int code = -2;
return Json(new { code = code, message = "Failed" });
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.