2016-09-06 5 views
1

HTMLヘルパーからの簡単なWebクライアント非同期呼び出しを作成しています。このコードを実行すると、なぜこの例外が発生しますか?HTMLヘルパーからの非同期呼び出し

using (var webClient = new WebClient())    { 
    webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); 
    webClient.Headers["Content-Type"] = "application/json"; 
    webClient.Encoding = Encoding.UTF8; 
    string orderString = JsonConvert.SerializeObject(orders); 
    string result = webClient.UploadStringAsync(createOrderURI, orderString); 

例外

のSystem.InvalidOperationExceptionアン非同期操作は、この時点で を起動することはできません。非同期操作だけで、非同期ハンドラまたはモジュール内または ページのライフサイクルにおける特定のイベント中に を開始してもよい

私が注文のUmbracoのteacommerceを使用していて、非同期などにコントローラを動かすに取得する必要はありません。そして、この呼び出しは、オーダーが作成されたときの外部APIへの呼び出しです。

答えて

1

Async method call in Razor view」によると、async methoc呼び出しは、ASP.NET MVCではなくASP.NET Core MVCでサポートされています。

ビュー内の非同期呼び出しや、同じコンテキストで呼び出しが実行されるHTMLヘルパーは、あなたのケースでは実行できません。 Razorエンジンはこれらの試みをキャッチし、引用された例外がスローされます。

MVCパターンに従うには、このロジックをコントローラに非同期アクションメソッドで入れ、ビューのモデルにデータを入れるというアイデアを再評価することをお勧めします。

+0

ありがとうございました。そうです、弾丸を噛んでください。私ができることを見るためには、茶商取引のコントローラーをタップインする必要があります。 – Pacchy

関連する問題