2017-03-22 4 views
4

Web API Webサービスを呼び出すASP.NET MVC Webサイトがあります。C#HttpClient()からのA​​PIコールが表示されないFiddler

コールは機能しており、ローカルマシンのWebサービスとWebサーバーの両方で200 OKを返します。

私はFiddlerを実行していますが、これらの呼び出しは表示されません。MVC Webサイト(Webサービスを呼び出します)への呼び出しのみが表示されます。

実際の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); 
} 

は、どのように私はフィドラーでのWebサービス呼び出しを見ることができますか?

+0

ブラウザ、MVC Webサイトとすべて同じコンピュータ上にあるWebAPIのか? – NineBerry

+0

はい - また、オンラインのWebサービスに対してもテストしています。 – niico

答えて

4

Fiddlerを起動すると、現在のWindowsユーザーの既定のシステムプロキシが変更されるため、このユーザーによるWeb要求はFiddlerによって取得されます。

ただし、WebサイトはIIS内で実行され、別のユーザーで実行されます。あなたのウェブサイトは、明示的に(あなたのバイオリン弾きが使用するポートを使用して)このようなあなたのMVCアプリケーションのweb.configファイル内のWebプロキシとしてフィドラーを指定することで、フィドラーを使用行う必要があります。

<system.net> 
    <defaultProxy> 
    <proxy proxyaddress="http://127.0.0.1:8888" />  
    </defaultProxy> 
</system.net> 

参考文献:

+0

OKマシンの設定をここでお勧めするように変更することをお勧めします(これが動作する唯一の方法です):http://www.telerik.com/blogs/capturing-traffic-from-.net-services-with -fiddler – niico

+0

通常、Windowsサービスで実行されているコードからWebアクセスをデバッグするためにmachine.configを変更するだけです。 IISのWebアプリケーションの場合、web.configファイルを操作するだけで十分です。私はテストし、私の答えに示されているコードがIISで動作することを確認しました。もう一度やり直して、表示されているとおりに正確にコードを使用してください。 – NineBerry

+0

マシンの設定を変更したときにしかコードが動作しません。あなたは、ブラウザがMVCテストアプリケーションを呼び出すのではなく、MVCアプリケーションがWeb APIサービスに対して行っているAPI呼び出しを見ているのですか? – niico

関連する問題