HTTPクライアントを使用してASMX WebMethod内のRESTサービスを呼び出すことは可能ですか? httpclientライブラリはasyncで、asmxはasync await(TAP)をサポートしていないため、呼び出しを強制的に同期させるために.Resultを使用しました。しかし、この時点では、httpclientは正常に呼び出すことができず、リモートサーバは接続エラーを積極的に拒否します。 async awaitまたは.Resultを使用してwinフォームアプリケーションで同じコードを実行すると、正常に動作します。asmx webmethodでhttpclientを使用
これはASMX WebMethodの問題ですか?
[WebMethod]
public void Get(){
//Sample (off the top of my head)
HttpClient client = new HttpClient();
//more code
Task.Run(()=> client.GetDocument()).Result;
}
おかげ
HttpClientをクライアント=新しいHttpClientを(); var tt = Task.Run(()=> client.GetAsync( "http://immanuel.co"))。結果。 - 変数ttにレスポンスが含まれていて、完全に同期しています。 – Immanuel
@Immanuel、あなたはAsp.Netで行うべきではない2つのことを行いました: '.Result'と' Task.Run() '。 [非同期コードをブロックしない](https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html) – Crowcoder