我有一个调用Web API Web服务的ASP.NET MVC网站。
呼叫正在运行并返回200 OK - 两者都在本地计算机和Web服务器上调用Web服务。
我有Fiddler正在运行,但它没有看到这些调用 - 只调用MVC网站(后者又调用Web服务)。
如何查看实际的网络服务电话?
这应该正常吗?特别是对基于Web的Web服务。
我已停止引用http://localhost
并使用MACHINENAME - 正如某些SO帖子中所建议的那样。但这没有用。
我正在使用HttpClient来调用它:
using (var client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes(username + ":" + password);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.BaseAddress = new Uri("http://MACHINENAME");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PutAsJsonAsync("api/path", custImp);
}
如何在Fiddler中查看Web服务调用?
答案 0 :(得分:9)
启动Fiddler时,它将更改当前Windows用户的默认系统代理,以便Fiddler捕获此用户发出的Web请求。
但是,该网站在IIS内部运行,并在不同的用户下运行。您必须通过在MVC应用程序的web.config文件中明确指定Fiddler作为Web代理来使您的网站使用Fiddler(使用您的Fiddler使用的端口):
<system.net>
<defaultProxy>
<proxy proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
参考文献:
如BornToCode所述,也可以将应用程序池标识更改为当前用户。