問題タブ [asynccontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2559 参照

c# - ASP.NET MVC2 jQueryからAsyncControllerメソッドを呼び出しますか?

MVC2 で AsyncController を使用する方法を学習しようとしていますが、ドキュメントやチュートリアルはほとんどありません。サードパーティ サービスへのエクスポートが非常に遅い通常のコントローラー メソッドを 1 つ取り、それを非同期メソッドに変換しようとしています。

元のコントローラーメソッド:

そこで、AsyncController を継承する新しいコントローラーを作成しました。

次に、jQuery から Export メソッドを呼び出します。

しかし、結果は 404 not found エラーです (Background/Export が見つかりません)。Background/Hello または Background/ExportAysnc を呼び出そうとすると、それらが見つかります。

私は何を間違っていますか?

0 投票する
1 に答える
1170 参照

c# - ASP.NET MVC2 AsyncController は HttpContext.Current にアクセスできますか?

このメソッドExportTo3rdParty()を AsyncController を使用するように変換しようとしています。

しかし、ExportTo3rdParty() メソッドは複数の場所で HttpContext.Current を使用します (変更するには多すぎる - 元のコーダーは依存性注入を十分に使用していませんでした)。たとえば、GetDefaultCurrency() を呼び出します。ExportTo3rdParty() が AsyncController を介して呼び出された場合、これは引き続き機能しますか?

Thread.Start を使用すると、HttpContext.Current にアクセスできないことがわかっています。しかし、AsyncController はどうでしょうか。

0 投票する
1 に答える
1002 参照

testing - MSpecを使用してASP.NETMVC3AsyncControllersのテストを作成する方法

TaskControllerASP.NET MVC 3アプリケーション用に、サイトのユーザーにニュースレターを送信するなど、長時間実行されるタスク用に作成したいと思います。メールの送信には時間がかかる場合があるため、を使用するのAsyncControllerが適切だと思いました。タスクの実行が終了したときに、データベースに状態を保存できるようにしたいと思います。

私は適切に育てられた開発者であり(:þ)、本当にBDDに夢中になっているので、当然、MSpecを使用した仕様から始めたいと思います。

私のコントローラーが次のようになっていると想像してください。

AsyncControllersの仕様を作成するにはどうすればよいですか?次の仕様から始めると想像してください。

SendMailAsyncテストのメソッドを呼び出す必要がありますか?私は実際に不機嫌に感じます。結果をどのように処理しSendMailCompletedますか?

0 投票する
1 に答える
2320 参照

.net - T4MVC AsyncController

最近、Nuget を使用して T4MVC をインストールしました。これより前の古いバージョンは正常に機能していましたが、非同期コントローラーが必要な新しい要件がありました。非同期コントローラーを作成した後、t4 と関係があるため、プロジェクトがコンパイルされませんでした。そこで、Nuget を使用して更新しました。

私が今抱えている問題は、最近t4mvcを更新するまでコントローラーが正常に機能していたことです。コードを更新するとコンパイルが実行されますが、非同期アクションを呼び出すと、長い時間が経過して返され、大量の誤ったデータが返されます。さらに、重大なことに、コントローラーにブレークポイントを設定すると、それらにヒットしなくなりますか?! DocumentController. generated.cs を最後の作業バージョンに戻すと、すべて正常に動作します。

以下は、機能する古い DocumentController. generated.cs と機能しない新しいものです。

ここで何が起こっているのかを理解するのを手伝ってくれる人はいますか? 私は T4MVC がとても良いので依存するようになりましたが、これらの非同期アクションを避けることはできません。

新着

要求されたとおり、ここに私の DocumentController クラスのスタブがあります。

}

2011 年 7 月 4 日更新

こんにちは、デイビッド、お返事に時間がかかって申し訳ありません。他の仕事を探しています。

私は問題を追跡することができました。うまくいけば、あなたはそれに光を当て、おそらく修正を作成することができます.

上記の 2 番目のコード ダンプを見ると、これに問題があります。問題は、作成したことです。

MVC がエラーをスローしているとは思いませんでしたが、そうでした。

2011-04-07 15:59:38,921 [41] FATAL MvcApplication [(null)] - キャッチされない例外が発生しました System.Reflection.AmbiguousMatchException: コントローラー タイプ 'DocumentController' でのメソッド 'GetDocumentListCompleted' のルックアップは、以下のメソッド: WebUI.Client.Controllers.DocumentController 型の System.Web.Mvc.JsonResult GetDocumentListCompleted(Web.Gateway.DocumentMetaDataCollection) System.Web.Mvc.JsonResult GetDocumentListCompleted() 型 WebUI.Client.Controllers.DocumentController の System.Web .Mvc.Async.AsyncActionMethodSelector.GetMethodByName(文字列メソッド名)

私が理解しているように、MVC システムは私のコードとあなたが作成したコードとあいまいに一致しています。

上記のコードをコメントアウトすると、すべてが再び正常に実行されます。

あなたは今、性質や問題を理解していますか?修正できますか?

乾杯、

ライアン。

0 投票する
1 に答える
948 参照

asp.net - ASP.NET MVC 2 のマルチスレッド設計に関する質問

私は旅行関連のウェブサイトに取り組んでおり、ここに私の高レベルのアーキテクチャがあります:

特定のユーザー検索シナリオでは、J2EE サービスを 4 ~ 5 回呼び出し (独立した操作)、すべての応答を 1 つの応答に統合し、それをコントローラーに渡してユーザーに提示できるようにする必要があります。

このシナリオを処理する最善の方法は何ですか? MVC 2 の AsyncController 機能を使用するか、サービス層にマルチスレッド ロジックを実装する必要がありますか?

0 投票する
0 に答える
588 参照

c# - コントロールを作成するasynccontrols asp.netエラー「オブジェクト参照がオブジェクトのインスタンスに設定されていません」

これが私のサンプルフォームです。私は asynccontrols を使用しています。サイトは正常にコンパイルされ、正常にロードされ、正常に動作します。デザイナーで何も表示できません。ハーフ?

0 投票する
4 に答える
1067 参照

autofac - Autofac、OrchardProject、AsyncControllers

私は AsyncController を OrchardProject で動作させることに取り組んでいます。私が使用している現在のバージョンは 2.2.4.9.0 です。

通常の MVC3 バニラ アプリケーションで正常に動作するhttp://www.pastie.org/2117952 (AsyncController) という コードを 2 人に 注目してもらいました。

基本的に、IndexCompleted にはルーティングできますが、Index にはルーティングできません。プロジェクト全体の Autofac 構成に何かが欠けていると思います。

構成は global.asax にあると思います: http://pastie.org/2118008

私が探しているのは、これが AsyncController に autofac を実装する正しい方法であるかどうか、または実装/初期化/などする必要がある何か/場所があるかどうかについてのガイダンスです。

〜ダン

0 投票する
1 に答える
519 参照

c# - 非同期操作は完了しましたが、結果がブラウザに送信されません

Webチャットを実装したい。

バックエンドはデュアル WCF チャネルです。デュアル チャネルはコンソールまたは winform で動作し、実際には Web でも動作します。少なくともメッセージの送受信はできます。

このブログ投稿をベースとして使用し たため、非同期操作が完了しました。

結果をデバッグすると、メッセージがすべてブラウザに送信できる状態になっていることがわかります。

しかし、実際には何も送信されません。

Fiddler を確認すると、リクエストが表示されますが、応答がありません。

また、SessionStateBehaviour を Readonly に設定する必要がありました。そうしないと、非同期操作によってページ全体がブロックされてしまいます。

編集: CheckForMessagesAsync は次のとおりです。

参照されたブログ投稿と同じ考え方です

EDIT2:ところで、何も受信されていないため、待機タイムアウトが発生すると、応答が返されます。だからどこかで壊れそうです。これをログに記録する方法はありますか?

0 投票する
1 に答える
813 参照

asp.net-mvc-2 - 次のシナリオで非同期コントローラーを使用できますか?

Asp.net MVCにアプリケーションがあり、ある時点で、プロセス実行の進行状況インジケーターを表示するモーダルダイアログをユーザーに表示したいと思います。

舞台裏のプロセスは、多くのデータベースデータ処理を実行します(既存のデータに基づいて、データベースに書き戻される多くの結果レコードを生成します)。プロセスには、短時間から非常に長い時間までかかる場合があります(既存のデータによって異なります)。

アプリケーションはこのプロセスを非同期で(Ajaxリクエストを介して)開始し、同じ方法で進行状況を表示します。

問題

プロセスを非同期的に開始してプロセスの終了を通知する非同期コントローラーについて少し読んだことがありますが、進行状況が表示されず、ブラウザーのタイムアウトがどのように処理されるかがよくわかりません。クライアントが行く限り、非同期リクエストは同期リクエストと同じです。したがって、クライアントは応答を待ちます(私が理解しているように)。主な違いは、サーバーが非同期で何かを実行するため、他の着信要求をブロックしないことです。私が実際にすべきことは次のとおりです。

  1. プロセスを開始し、プロセスが開始されたクライアントに応答するリクエストを作成します。
  2. クライアントは定期的にサーバーをポーリングしてプロセスの進行状況を確認し、パーセンテージ値(おそらくJSONとして)で即座に応答を返します。
  3. 進捗状況が100%になると、それは終了したことを意味するため、クライアントは結果を要求する必要があります。

非同期コントローラーがこのように機能するとは確信していません...

問題は、非同期コントローラーを理解していることがよくわからないため、今説明したように、この問題にどのアプローチを使用すべきかわからないということです。私は2つの可能性を自分で見ています。

  1. Asp.netMVC非同期コントローラーがこのように機能する場合
  2. 要求に応じてデータを処理し、その進行状況を報告するWindowsサービスアプリ-このサービスは、通常のコントローラーアクションを使用して特定のレコードをDBに書き込むことによって開始されます。それが開始され、サービスが進行状況をDBに書き込むため、Asp.netMVCアプリはクライアントプロセスのポーリング要求でそれを読み取ることができます。
0 投票する
1 に答える
395 参照

c# - AsyncController: 2 つの非同期メソッドを持つ干渉

私は2つのAsyncMethodsを持つAsyncControllerを持っています。1 つは GetMessages と呼ばれ、もう 1 つは Check です。おそらく両方が this.AsyncManager.OutstandingOperations.Increment(); を呼び出すため、一方の呼び出しが他方をブロックしているようです。同じ AsyncManager を共有していますか? それを行う正しい方法は何ですか?お互いに干渉しないようにするには、2 つの AsyncController が必要ですか?

更新: 両方のメソッドのコードは、ここに投稿されたコードに似ています: Async operation completes, but result is not send to browser

実際、これは同じコントローラーで、Check/CheckCompleted を追加しただけです。場合によっては、「GetMessages」が返されるように「チェック」をトリガーする必要があります

Update2: 両方の方法で 60 秒の waittimout があります。1つを5つに減らしました。これは役に立ちますが、単なるハックだと思います。