2016-07-14 9 views
0

私はWCFサービスをWindowsサービスとして実装しており、ASP.Netアプリケーションからこのサービスを呼び出す必要があります。 WCFサービスは、カスタムフォーマッタを使用して応答します。ASP.NetからのWCF RESTサービスの呼び出しが返されない

以下のコードをテストしました。コンソールアプリケーションまたは単体テストプロジェクトから実行すると動作しますが、ASP.Netアプリケーションから呼び出すとハングします。

私はWCFコードで要求をデバッグできましたが、応答していますが、クライアントは応答を受信しません。

誰でもASP.NETクライアントアプリケーションに到達するための応答を妨げる可能性のある制限を知っていますか?

public async Task<SomeDataToken> PostData() 
{ 
    const string SomeMediaTypeName = "application/some-media-type"; 
    SomeDataToken request = new SomeDataToken();   

    using (var client = new HttpClient()) 
    { 
     var formatter = new SomeMedyaTypeFormatter(); 
     client.BaseAddress = new Uri(@"http://localhost:8001/"); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SomeMediaTypeName)); 
     client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", SomeMediaTypeName); 

     try 
     { 
      var httpResponse = await client.PostAsync("SomeController/SomeAction", request, formatter); 
      var result = await httpResponse.Content.ReadAsAsync<SomeDataToken>(new[] { formatter }); 
      return result; 
     } 
     catch 
     { 
      return null; 
     } 

    } 
} 

答えて

0

は、問題ではないWCFに関連しているが、それは、独自のスレッドを作成するような方法にASP.Net/MVCは、非同期を管理しているようです。

ASP.NET/MVCアプリケーションのいずれかのsincrhonous部分から非同期呼び出しを行う

PostAsyncまたは GetAsync方法に .ConfigureAwait(false)を追加するために注意を払います。そうでない場合は、 PostAsyncまたは GetAsyncコールがハングします。

関連する問題