問題タブ [ihttpasynchandler]
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.
c# - IHttpAsyncHandler を使用して WebService を非同期的に呼び出す
これが基本的なセットアップです。外部 Web サービスにアクセスする必要がある Flash アプリケーションを含むページを持つ ASP.Net WebForms アプリケーションがあります。Flash の (おそらくセキュリティ上の) 制限により (質問しないでください。私は Flash の専門家ではありません)、Flash から Web サービスに直接接続することはできません。回避策は、Flash アプリケーションが呼び出すプロキシを ASP.Net で作成することです。これにより、WebService が呼び出され、結果が Flash アプリケーションに転送されます。
ただし、Web サイトのトラフィックは非常に多く、問題は、Web サービスがまったくハングした場合、ASP.Net 要求スレッドがバックアップを開始し、深刻なスレッド スタベーションにつながる可能性があることです。それを回避するために、まさにこの目的のために設計されたIHttpAsyncHandlerを使用することにしました。その中で、WebClient を使用して Web サービスを非同期的に呼び出し、応答を転送します。IHttpAsyncHandler を正しく使用する方法に関するサンプルはネット上にほとんどないので、間違っていないことを確認したいだけです。私はここに示す例に基づいて使用しています: http://msdn.microsoft.com/en-us/library/ms227433.aspx
これが私のコードです:
これですべてうまくいきました。うまくいくはずだと思いますが、100%確実ではありません。また、独自の IAsyncResult を作成するのは少しやり過ぎのように思えます。Delegate.BeginInvoke から返された IAsyncResult を活用できる方法があるかどうか、または他の何かがあるかどうか疑問に思っています。どんなフィードバックでも大歓迎です。ありがとう!!
asp.net - 例外が発生したときに非同期ハンドラーがループを実行するのはなぜですか?
私はこのハンドラーを持っています。内部クラスの「StartTransfer」メソッドで例外が発生しました(スポットをマークしました)。理由により、このメソッドがループしたかどうかはわかりません。なぜループになり、例外メッセージで応答しなかったのですか?
c# - いつ System.Threading.ThreadPool を使用し、いつ多くのカスタム スレッド プールの 1 つを使用するのでしょうか?
遅いストアド プロシージャを実行する ASP.NET 用の非同期ハンドラーの作成に取り組んでいます。低速ページと高速ページの混合負荷で追加のスループットを得るには、ASP.NET が使用するスレッド プールとは別のスレッド プールで低速ページを実行する必要があることを理解していると思います。使用するスレッドが少ない (間違っている場合は訂正してください)。
だから私は見つけましたSystem.Threading.ThreadPool
-それはうまくいくはずですが...
このカスタム プールを使用するネット上のさまざまなチュートリアル、John Skeet の MiscUtilsにあるもの、および非同期パターンに関するこのチュートリアルで参照されているカスタム スレッド プールなど。
System.Threading.ThreadPool
は 1.1 から存在しています。なぜ人々は、まったく新しいものを作成する必要性を日常的に感じているのでしょうか? の使用を避けるべきSystem.Threading.ThreadPool
ですか?
私はスレッド化に関しては初心者なので、未定義の専門用語を簡単に使用してください。
更新します。実行するストアド プロシージャは、必ずしも MS-SQL であるとは限らず、また .NET などの組み込みの非同期メソッドを使用できるとは限りませんBeginExecuteNonQuery()
。
asp.net - IHttpAsyncHandlerでTaskまたはasync/awaitを使用する
スレッドを追加したいときにASP.NETアプリケーションを作成し始めてから、ASP.NETアプリケーション内でスレッドを実行する簡単な方法が3つあります。
- を使用し
System.Threading.ThreadPool
ます。 - カスタムデリゲートを使用し、その
BeginInvoke
メソッドを呼び出します。 System.Threading.Thread
クラスを利用してカスタムスレッドを使用する。
最初の2つの方法は、アプリケーションのワーカースレッドをすばやく起動する方法を提供します。ただし、残念ながら、 ASP.NETがHTTP要求を処理するために使用するのと同じプールからのスレッドを消費するため、アプリケーションの全体的なパフォーマンスが低下します。
次に、新しいタスクまたはasync/awaitを使用して書き込みを行いたいと思いましたIHttpAsyncHandler
。あなたが見つけることができる1つの例はここでドリューマーシュが説明するものです:https ://stackoverflow.com/a/6389323/261950
My guess is that using Task or async/await still consume the thread from the ASP.NET thread pool and I don't want for the obvious reason.
Could you please tell me if I can use Task (async/await) on the background thread like with System.Threading.Thread
class and not from thread pool ?
Thanks in advance for your help.
Thomas
c# - IHttpAsyncHandler と Request.Filter
IHttpAsyncHandler を使用して要求パイプラインにデコード フィルターを挿入しようとしていますが、Request.Filter プロパティが無視されていることがわかりました。
IHttpAsyncHandler と一緒に Request.Filter を正常に使用した人はいますか?
編集: Request.Filter を使用せずにこれを行う別の良い方法を見つけました。以下に貼り付けます。ただし、Request.Filter が機能しないというのは不可解です。参考までに、私の使用例は、サードパーティの RequestHandler を呼び出す前に URL デコードを行うことでした。
asp.net - ASP.NET AsyncHttpHandlers を使用したコメット
現在のasp.netアプリケーションでAsyncHttpHandlersを使用して彗星を実装しています。私の実装によると、クライアントは最初に通知フック要求を AsyncHttpHandler でサーバーに (そのユーザー ID とともに) 送信し、サーバー側では、ユーザー ID (キー) と IAynsResult (値) のグローバル (アプリケーション レベル) ディクショナリを維持します。そのため、ユーザーに通知を送信する要求が受信されるたびに、グローバル ディクショナリから一致する IAsyncResult を選択し、クライアント ユーザーに応答を送信します。
私の懸念は、ユーザー ID と IAsyncResult のディクショナリをアプリケーション レベルで維持することは適切な設計でしょうか? トラフィックが多いときは、サーバーに多くの負荷がかかると思います。彗星を達成できる他の方法はありますか?または、交通量の多いシナリオでコメットを実現するための優れた設計は何でしょうか。
asp.net - IHttpAsyncHandler をタイムアウトに設定するには?
web.config ファイルで executionTimeout を設定しようとしました。
IIS Manager Requests ページを見ると、30 秒経っても要求が終了していないことがわかります。
IHttpAsyncHandler 内にタイマーを実装する必要がありますか?
javascript - Node.Js VS HttpAsync(asp.net)
nodejsについて多くのことを読んだ後、私はまだ自分自身に尋ねます:
asp.net HttpAsync要求に勝る利点は何ですか?
(私が見るように)唯一の制限は、IIS
制限するリクエストの同時数です。
私は現在それをどのように理解しているかを描いてみました:
何か助けはありますか?
- nodejsでできる非同期操作で
.net/ado.net
できないことはありますか?
c# - コールバックでの「オブジェクト参照がオブジェクトのインスタンスに設定されていません」エラー
IHttpAsyncHandler と XMLHTTPRequest を使用して、次の URL を使用してメッセージをクライアントにプッシュしています: http://www.codeproject.com/Articles/42734/Using-IHttpAsyncHandler-and-XMLHttpRequest-to-push しかし、実際にはいくつかの変更を加えています。この例は 1 つのクライアントのみに基づいており、複数のクライアントにメッセージを送信する必要があるため、これらの変更を行います
今、私は2つの問題を抱えています
このタイプのエラーを解決するにはどうすればよいですか? これは永続的なエラーではなく、ランダムに発生します。
W3wp.exe の非同期スレッドの制限は何ですか。25 リクエストを超えると次のリクエストを開くことができず、IIS をリセットしてアプリケーションを再開する必要があります。