問題タブ [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.
asp.net - ASP.NET MVC に IRouteHandler.GetHttpHandler() から IHttpAsyncHandler を認識させる方法は?
このQ & Aで、ASP.NET MVC を非同期処理に対応させる方法を 1 つ見つけました。しかし、私はそれを機能させることはできません。
基本的には、メソッドGetHttpHandlerを 1 つだけ持つ IRouteHandler の新しい実装を作成するという考え方です。GetHttpHandlerメソッドは、Begin/EndXXXX パターン API を持っているため、単に ではなく実装を返す必要がありますIHttpAsyncHandler
。IHttpHandler
IHttpAsyncHandler
次に、ファイル Global.asax.cs の RegisterRoutes メソッドで、このクラスAsyncMvcRouteHandlerを登録します。
ProcessRequest、BeginProcessRequest、EndProcessRequestにブレークポイントを設定しました。ProcessRequestのみが実行されます。つまり、AsyncMvcHandlerはIHttpAsyncHandlerを実装していますが。ASP.NET MVC はそれを認識せず、単に実装として処理します。IHttpHandler
ASP.NET MVCでAsyncMvcHandlerをIHttpAsyncHandlerとして扱うようにして、非同期ページ処理を行うにはどうすればよいですか?
asp.net - ASP.NET の HttpHandler とは
ASP.NET の HttpHandler とは何ですか? なぜ、どのように使われるのですか?
asp.net - IHTTPAsyncHandler の使用方法
次のように、ファイルの最初から最後まで読み取るコードがあるとします。
これを完全に非同期にしたい。IHTTPAsyncHandler から派生する場合、このコードはどこに行き、各行のコンテンツを取得するコードはどこに行くのでしょうか?
asp.net - IHttpAsyncHandler 内の同期データベース読み取り
asp.net で、delegate.BeginInvoke を使用して IHttpAsyncHandler 内で同期データベース クエリを呼び出すと、データベースの読み取り中に asp.net ワーカー スレッドが解放されますか?
たとえば、この投稿: http://madskristensen.net/post/How-to-use-the-IHttpAsyncHandler-in-ASPNET.aspx
ServeContent 内に同期データベース呼び出しを配置した場合、要求は引き続き非同期で行われますか?
c# - ThreadPool.QueueUserWorkItem の頻度チェックを定義できますか?
System.Web.IHttpAsyncHandler
ファイルのダウンロードに使用する Web サイトの帯域幅を制限するために を実装しました。ユーザー帯域幅を定義したら、byte[]
毎秒 (正確には 1000 ミリ秒) を送信する必要があります。何かのようなもの:
にアクセスするとThreadPool.QueueUserWorkItem
、コードの実行頻度を制御できなくなるため、実行に 1 秒もかからず、その差がダウンロードのスループットに反映されます。
だから、私の質問は次のとおりです。
ThreadPool.QueueUserWorkItem
チェック間隔を定義できますか?- そうでない場合、この要件を達成するための別のアプローチはありますか (帯域幅調整?)
- そうでない場合、ポニーを飼ってもいいですか?
ティア
c# - IHttpAsyncHandler を介してファイルを送信する際の問題
IHttpHandler を使用して Web サービスを呼び出し、結果の byte[] をダウンロードした添付ファイルとしてクライアントに返します。これは正常に動作しますが、IHttpHandler を IHttpAsyncHandler に変更しようとすると、ファイルのダウンロード ダイアログが表示されますが、ファイルのダウンロードが開始または終了しません。私は何を間違っていますか?
iis-7 - IHttpAsyncHandlerによりUnathorizedAccessExceptionが発生します
クリスマス休暇の最後の数日間、IHttpAsyncHandlerの実装をIRequiresSessionStateとともに使用して、ASP.NETアプリケーションを介してリモート共有上のXMLファイルを読み取ろうとすると、UnathorizedAccessExceptionに苦労していました。
多くの頭痛の種の後で、ハンドラーの外側のコードが問題なく機能したと結論付けた後(アクセス許可を参照)、スレッドの問題である可能性があると考えたので、IHttpAsyncHandlerをIHttpHandlerに変更すると、問題は解消されます。
ここで私を悩ませているのは、テストの目的で、IHttpAsyncHandler実装の場合は実際には使用しなかったということです(したがって、BeginProcessRequestとEndProcessRequestは使用せず、sync。バージョンのProcessRequestのみを使用しました。
誰かが目前の問題を説明しようとすることができますか?
ハンドラーを非同期で使用することにはいくつかの有益な問題があります。アプリケーションの後半で配信される値を事前にキャッシュできるためですが、それを機能させるには、IHttpAsyncHandlerを実装するときにのみ現れると思われるセキュリティの問題をパスする必要があります。 。
よろしくお願いします-そして幸せな休日:-)
c# - 再利用可能な非同期HttpHandlerのパターン
私は現在、カスタムHttpHandlerを開発しています(CSSを圧縮/結合するためですが、この質問には関係ありません)。
私は、誰もが知っているような単純なreusable=true同期HttpHandlerから始めました。
今、私はそれを非同期ハンドラーに改善しようとしています(IO機能を使用し、非常に忙しいWebサイトで使用されているため)。
私の最初の試み(そしてこれはうまくいくようです):
これは再利用不可能なhttphandlerです(私が読んだところによると、このハンドラーには状態(asyncProcessRequestフィールド)があるため、IsReusableはfalseである必要があります。
今、私はこれを再利用可能にしたいです。したがって、私の最初の考えは、次のようなIAsyncResult/Actionの辞書を作成することでした。
これは正しいパターンですか?または私は道を離れていますか?
動作しているようですが(エラーや奇妙な動作は発生していません)、これを本番環境に移行する前に、これらのHttpハンドラーの作成に私よりも経験のある人に確認したいと思います。
前もって感謝します!
asynchronous - ASP.Net: IHttpAsyncHandler と IRequiresSessionState が機能しない
IHttpAsyncHandler を実装しました。そのハンドラーへのウィジェットを持つ Web ページから約 5 つの異なる AJAX 呼び出しを行っています。
これらのウィジェットの 1 つは (データベース クエリが大きいため) ロードに約 15 秒かかりますが、他のウィジェットはすべて 1 秒以内にロードされるはずです。ハンドラーは同期的に応答しています。
非常に一貫性のない結果が得られます。ProcessRequest メソッドは、Session およびその他のクラス レベルの変数を使用しています。それにより、異なるリクエストがそれぞれが所有する代わりに同じスレッドを使用する可能性がありますか?
私はこれを取得しています...
Request1 ---> 応答 1 秒
Request2 ---> 応答 14 秒
Request3 ---> 応答 14.5 秒
Request4 ---> 応答 15 秒
Request5 ---> 応答 15.5 秒
しかし、私はこのようなものをもっと探しています...
Request1 ---> 応答 1 秒
Request2 ---> 応答 14 秒
Request3 ---> 応答 1.5 秒
Request4 ---> 応答 2 秒
Request5 ---> 応答 1.5 秒
あまりにも多くのコードを投稿しなくても、私の IHttpAsyncHandler メソッドの実装はかなり標準的です。
IHttpAsyncHandler.BeginProcessRequest メソッドにデバッグ ブレーク ポイントを配置すると、最後の Process が完了するまでメソッドが起動されないことがわかります。
また、私の machine.config にはこのエントリがあります... processModel autoConfig="true" 他のプロパティは設定されていません。
このようにハンドラーを呼び出しています...
$.ajax( { type: "GET", url: "../HTML/HtmlHandler.ashx", cache: true, dataType: "text", data: { html: name }, success: function(html) { //$(function() { //console.log(tabname); //console.log("msg:" + msg); $("#" + name + " holder").html(html); //checkAllLoaded(); ClientHome_init(''); //}); },
他に何を確認する必要がありますか?
c# - IHttpAsyncHandler を介した BLOB の読み取り
SQL Server 2000 データベース (BLOB タイプ) に画像を保存しています。私の ASP.NET アプリケーションには、エンド ユーザーに多くの画像を表示する必要がある Web ページがあり、IHttpAsyncHandler を介してブラウザーの画像要求を処理したいと考えています。codeproject で同様の投稿を見つけました「Asynchronous BLOB DataReader の非同期 HTTP ハンドラー」。 しかし、何らかの理由で、「BeginProcessRequest」メソッドの完了時にページがフリーズし、「EndProcessRequest」メソッドが呼び出されません。誰でもこの投稿を見て、その投稿の何が問題なのか教えてもらえますか? または、このタスクを完了するために何をする必要がありますか (IHttpAsyncHandler を介した BLOB の読み取り)?
この投稿のソース コードは次のとおりです。