0
public class HomeController : Controller
    {   
        public ActionResult Index()
        {
            var t1= Test1().Result;
            return View();
        }

        private async Task<HttpResponseMessage> Test1()
        {
            string strUrl = "http://localhost:52033/api/values";
            var instanceClient = new HttpClient();
            var requestMessage = new HttpRequestMessage(HttpMethod.Get, strUrl);
            var httpRespons = await instanceClient.SendAsync(requestMessage);
            return httpRespons;
        }
    }

私が Test1 () というインデックス アクションにいたとき。結果; 現在のスレッド デッドロック プログラムが応答しない場合に発生します。Result 呼び出しのサフィックスを通常の操作に持ち込まないでください。

4

1 に答える 1

0

ASP.NET コンテキストでResultorを呼び出さないでください。Wait理由の 1 つは、ブログで説明しているように、デッドロックが発生する可能性があることです。

代わりに、次awaitのように を使用する必要があります。

public async Task<ActionResult> Index()
{
    var t1 = await Test1();
    return View();
}
于 2013-03-22T12:32:32.877 に答える