問題タブ [httphandler]
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# - HTTPハンドラーの問題
web.configファイルにHTTPハンドラーを設定しました。
そして、App_Codeフォルダー内のSeoHandler.ashx.csを指すファイルSeoHandler.ashxを私のWebサイトのルートに持っています(WebサイトはWebアプリケーションプロジェクトではありません)。
サイトをローカルで実行し、「dork_test.aspx」のようなURLを入力すると、リクエストはハンドラーにリダイレクトされ、そこでビジネスが処理されます。
しかし、コンパイルされたサイトが私のドメインで実行されている場合、「dork_test.aspx」は次のようになります。
'/'アプリケーションのサーバーエラー。
リソースが見つかりません。
説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。
要求されたURL:/dork_test.aspx
SeoHandlerが「dork_test.aspx」リクエストをローカルでキャッチするのにサーバーではキャッチしないのはなぜですか?
これが重要かどうかはわかりませんが、ドメインでURL SeoHandler.ashxにアクセスすると、ハンドラーは想定どおりに機能します。
Webホストに私のエントリを無視するIIS設定がある可能性はあります<httpHandlers>
か?
html - カスタム画像ハンドラー:キャッシュ戦略
シナリオ
通信アプリケーション用のカスタムCMSを構築しています。ユーザーは画像をサーバーにアップロードし、後でマークダウンを使用して書き込んだ投稿でそれらを参照できます。画像はデータベースに保存され、フォームのURLで参照されますimages/{id}
。カスタムイメージハンドラーはこれらを取得し、遠い将来の期限切れヘッダーを設定して、何度もフェッチされないようにします。ファイルシステムに画像を保存することは、顧客ごとのオプションではありません。
投稿は、パフォーマンスのためにマークダウンおよびhtmlとしてデータベースに保存されます。
マークダウン
HTML
問題
これらの画像も編集可能です。キャッシングの観点からは、これには問題があります。画像を編集するときは、ブラウザが最新バージョンを取得していることを確認する必要があります。私は次の解決策を考え出しましたが、それらすべてに欠けていることがわかりました。
可能な解決策
バージョンフィールド
画像とともにバージョンフィールドを保存します。画像が編集されたときにそれをインクリメントして、フォームのURLを生成しimages/{id}/version/{version}
ます。
これは、画像のURLが常にデータベースから生成される場合に便利です。ただし、URLをテキストとして投稿に保存しているため、これらのリクエストに対して、場合によっては大量のテキストを前処理する必要があります。また、画像を編集するとURLが古くなるため、画像のリンクが面倒になります。これはおそらく良い考えではありません。
新しいURL
画像を編集したら、それを新しいエントリとしてデータベースに保存します。
これはバージョンの維持がないことを意味しますが、古いリンクと古い投稿には同じ問題があります。それらは決して更新されません。パフォーマンスは良好ですが、問題は残ります。
304-変更なし
各画像の最後に編集したフィールドを保存します。条件付きリクエストが返されると、httpステータス304-変更なし、帯域幅の使用量が削減されます。
これは私がこれまでに得た最良の解決策のようです。編集しない限り画像はキャッシュされますが、私はこれまでこのアプローチを使用したことがありません。ページに50枚の画像がある場合でも、サーバーへのリクエストは50枚あります。帯域幅は減少しますが、遅延は残ります。このアプローチはそのコストに見合う価値がありますか?
質問
私はこの分野での経験がほとんどないので、皆さんがもっと経験を積んでくれることを願っています。上記の解決策のいずれかが実行可能ですか?もしそうなら、彼らとのあなたの経験は何ですか?そうでない場合、より良いアプローチは何ですか?
asp.net - httpmodules と httphandlers の間の相互作用
asp.net 2.0 アプリでは、httpmodule と httphandler を使用して、Cookie を介していくつかのメトリックを計算しています。ネットワーク転送時間を計算するために、httpmodule:EndRequest は Cookie に Transferstart を保存し、httphandler:Processrequest は datetime.now を使用して transferstart を差し引いて全体のネットワーク時間を決定します。これは正しいです?また、リクエストフローのプロセスについても不明です。request > HttpModule::OnStart > HttpModule::OnEnd > HttpHandler::ProcessRequest のようになりますか?
asp.net - 関連する HttpModule が処理されるときに HttpHandler が処理されない
asp.net 2.0 アプリケーションには、HttpModule と HttpHandler があります。それらは、特定のファイル タイプの要求を処理するために web.config に登録されます。要求は、MS AJAX を使用してクライアント側から非同期に開始されます。私は何か奇妙なことに気付きました. 何らかの理由で、ハンドラー部分がスキップされることがあります。何が原因でしょうか?
asp.net - HttpHandlersとHttpModulesの奇妙さを介したasp.net2.0でのネットワークパフォーマンスの測定
HttpModuleとHttpHandlersに依存し、次のように機能するパフォーマンス測定モジュールがあります。
- ページのリクエストがサーバーに届きます。
- HttpModule_Beginは、開始時刻をCookieに書き込みます。
- HttpModule_Endは、終了時刻をCookieに書き込みます。
- クライアントでは、ページの読み込みが終了したら、HttpHandler_ProcessRequestによって処理されるAJAXを介して特別なリクエストを実行します
- HttpHandler_ProcessRequestで、前のHttpModule_End(Cookieに格納されている)によって書き込まれた終了時刻からDateTime.Nowを減算し、データベースに格納します。私が言及するのを忘れた1つのこと:すべてのデータはCookieを介して共有されるため、HttpHandlerは、セッションIDなどなしでCookieからデータをプルするだけです...すべての参加者は同じタイムゾーンにいます。
このプロセスはほとんどの場合正常に機能しますが、1時間を超えるネットワーク時間を報告する場合もあります。これは、終了時刻の書き込みからAJAXリクエストの起動までの時間の経過が非常に長いか、AJAXリクエストの起動からアプリサーバーに到達するまでの時間の経過が長いことを示しています。私は、この問題を実際に引き起こしている可能性があるものを理解しようとしています。なぜ操作が単にタイムアウトしないのですか?
asp.net - ファイルダウンロードHTTPハンドラーで404を処理する最良の方法は?
ユーザーがファイルをダウンロードするためのリンクを提供するグリッドがあります。ファイルはアプリケーションの外部に保存され、パス参照はデータベースから読み取られ、要求された各ファイルを処理するために HTTP ハンドラー (*.ashx) が使用されます。ただし、存在しないファイルを指すデータベース エントリが存在する可能性があります。私はFileNotFoundException
.
最初のアイデアは、応答に標準の 404 コードを設定することです。それが私が今行っていることです。
ファイルの欠落に関する通知 (jQuery) を表示するのがより便利な方法ですが、ファイルのダウンロードは AJAX で行われないため、これには 2 段階のプロセスが必要です。クライアント側の onclick ハンドラーが Web サービス メソッドを呼び出して、ファイルが存在し、存在しない場合は、クリックをキャンセルし (false を返す)、わかりやすいメッセージをユーザーに表示します。ただし、ファイルが存在する場合は、通常の実行に進みます。しかし、これによりさらに別のサーバー呼び出しが追加されます。
同様の問題に対処しましたか?どのように解決しましたか?
明確化 - アプリケーションは ASP.NET 2.0 で構築され、jQuery を使用して Web サービス メソッドを呼び出します。
asp.net - ASP.NETHTTPHandlerと長時間実行されるプロセス
これは複数の部分からなる質問です。
完了するまでに数分かかる可能性のあるプロセスがあります。これは、非同期のjavascriptリクエストを使用してHTTPHandlerを呼び出すことによって実行されます。
質問1:このリクエストがサーバーとクライアントの両方でタイムアウトしないようにするにはどうすればよいですか?
質問2:最終ページが完了する前にXmlHttpRequestオブジェクトに返送される処理中に、HTTPHandlerからデータを出力することは可能ですか?
実際の作業負荷と完了した返品率を計算したいと思います。これは可能だと思います。
任意のヒント?
編集:
簡単なテスト:
HelloWorldを少しずつクライアントにプッシュします...これは同期リクエストで機能します。xmlHttpRequestが各行のreadystatechangeイベントを取得するかどうかを確認します。
ASP.NETアプリでのマルチスレッド化は常に避けています。これは、作業プロセスがいつ終了するかを制御できないため、生成されたすべてのスレッドが停止する結果になるためです。
代わりに、IISがすでにこれを行っているのに、なぜ別のスレッドプールを再発明するのか。
asp.net - AJAXがASP.NETHTTPハンドラーで機能しない
私は愚かなことをしていると思います。私は以前にこれを問題なく行ったことがあると誓いますが、今はそれを機能させることができません。ASP.NETで記述されたHTTPハンドラーがあり、AJAXを介して(jQueryを使用して)呼び出す必要があります。私のweb.configで、このようにハンドラーを登録します...
ハンドラーは今テストするように設定されています...
そして、私はそれを呼び出すために次のjQueryを持っています...
リクエストに使用されたURLが正しいことを知っています。IISは、axdパスをASP.NETISAPIフィルターにルーティングするように設定されています。ハンドラーが呼び出されていないことを確認しました(ハンドラーを変更してログメッセージを出力しましたが、何も出力されませんでした。イベントビューアーに何も表示されません)。
何か案は?
編集: ブラウザでハンドラーに直接移動しようとすると、404エラーが発生します。
c# - .net HttpHandlers はリクエストをパイプラインで IIS6 に渡します
HTTP ハンドラーがリクエストをパイプラインを介して IIS 6 に戻し、リクエストを処理させる方法はありますか?
たとえば、verb="(wildcard)" path="(wildcard).txt" に設定された HTTP ハンドラーがあるとします。
myunformated.txt というファイルがあります。クエリ文字列パラメーターが添付されていない場合は、IIS 6 からユーザーに送信してもらいたいと思います。
何か案は?