問題タブ [ihttphandler]
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# - ASP.net での静的ファイルと認証
IIS7 に仮想フォルダー /topFolder/ があり、そのフォルダーには、ブラウザーに表示できる任意のファイル (xml、html、swf、doc など - IIS の観点からは通常「管理されていない」リソース) が存在するとします。フォルダーの下のファイルを開く許可を要求に与える前に、ユーザーが問題のサブフォルダーとファイルの「ライセンス」を持っているかどうかを確認するために、いくつかのセッション変数を確認する必要があります。
IHttpModule および IReadOnlySessionState インターフェイスを使用してモジュールを実装しようとしましたが、ファイルが "静的" で IIS で管理されていない (aspx、ashx など) 場合、セッションは常に AcquireRequestState イベントで null になります。
カスタム HttpHandler を使用すると、セッションを取得できますが、コンテンツを応答に送信する方法も実装する必要があります。編集: ユーザーはファイルをダウンロードしていないので、IIS がその StaticFileModule と同じようにファイルを提供するようにしたいだけです。ハンドラー/モジュールは、実際には StaticFileModuleWithAuthorizationHook である必要があります...
だから私は本当に次のことをしたい: 1. リクエスト /topFolder/* について: セッションとライセンスなどをチェックする
誰かが助けてくれることを願っています。
.net - IHttpHandler で元の HTTP 要求パケットにアクセスする
Windows Media Player/Silverlight からのストリーミング メディアの要求を処理できる IHttpHandler を作成しようとしています。つまり、このような生の HTTP リクエストに応答することを意味します (プロトコル ドキュメントから取得)。
ProcessRequest メソッドにたどり着くと、context.Request.Headers コレクションはプラグマ値を公開していないようです。さらに、同じキー (Pragma) を持つ行が 2 つあるため、実際には実行できません。
元のパケットを取得できれば、これらを手動で解析できると想定しています。
とはいえ、次にやりたいことは、HttpWebRequest 型の 2 次リクエストを作成することです。それはまた、一方が他方を上書きすることなく、2つの同一のプラグマ値を受け入れることができないと私が期待する同様の辞書を備えています。
何か不足していますか?
c# - HttpContextを介してファイルを送信すると、ブラウザがハングします
HttpHandlerを使用してユーザーにファイルを送信しています。すべてのブラウザで、ファイルを少なくとも1回表示/ダウンロードした後、後続の表示/ダウンロードのブラウザ/アプリケーションがハングします。コードは次のとおりです。
Response.Close()とResponse.End()を呼び出すのは良い考えではないことを読みましたか?残すことと取り除くことの両方を試みました、そしてそれはまだ起こります。
編集:
TransmitFileには既知の問題があるようです。より詳細な説明は次の場所にあります:http: //www.improve.dk/blog/2008/03/29/response-transmitfile-close-will-kill-your-application
TransmitFileを削除してWriteFileに変更したところ、完全に機能するようになりました。
asp.net - XMLDataSourceをHTTPハンドラーにバインドします
動的に生成されたXMLデータがいくつかあり、それらは少数のコンシューマーによって消費されます(ASPXページ、フラッシュファイル、および別のファイルもあります)。
カスタムハンドラーとして実装しました。ハンドラーでXMLを作成し、response.writeを使用して出力します。
ここで、XMLDataSourceのDataFileプロパティをハンドラーに設定すると、ashxファイルを文字通り読み取ろうとし、HTTPを介して呼び出されません。
何かアドバイス?
asp.net - フォームに投稿する IHttpHandler
ASP.NET で純粋なコード ビハインドからフォームに投稿することは可能ですか? 基本的に、Response.Redirect() をシミュレートする必要がありますが、GET ではなく POST を使用してシミュレートし、いくつかの Request パラメータも設定します。これはすべて、HTTP ハンドラーの ProcessRequest メソッドで発生します。
注: Response.Redirect は実際には、http 302 アイテムを移動したコードをブラウザーにスローするだけであることに気付きました。上記の方法は不可能であり、私が話していることを別の方法で行うためのより良い方法があると推測しています。アクションが意図したターゲットに設定されたページとフォーム。HttpContext に、私が知らない神話上のメソッドがいくつかあるとしたら、それは素晴らしいことです。
編集:
わかりましたので、回避策を見つけました。基本的には、IHttpHandler から多数の html と javascript を Response.Write()ing します。次に、ポストを実行し、ポストを実行するための中間ページをシミュレートします (ただし、ハンドラー内にできるだけ多くのコードを保持します)。
c# - HttpHandler からの画像がブラウザにキャッシュされない
IHttpHandler を使用してデータベースから画像を提供しています。関連するコードは次のとおりです。
問題は、おそらく応答ヘッダーで正しいことを示していないため、ブラウザーが画像をキャッシュしないことです。HttpCachePolicy プロパティのメソッドを呼び出す部分は、ブラウザに画像を強制的に保持させると思われるものですが、そうではありません。「正しい」ことは、ハンドラーが画像なしで 304 ステータス コードを返すことだと思いますよね?IHttpHandler を使用してそれを達成するにはどうすればよいですか?
編集:
最良の回答によると、このコードを実行すると、問題が完全に解決されます。はい、リファクタリングが必要ですが、一般的には私が求めていたものを示しています。関連する部分:
asp.net - IE でスタックオーバーフローを生成する画像の IHttpHandler
ユーザーに提供する必要がある Web アプリケーションのコンテキスト外にある画像のディレクトリがあります。現在、私は IHttpHandler を使用して画像を提供し、JavaScript を使用して一連の画像をナビゲートしています (ナビゲーションは今のところ基本的なものです)。IHttpHandler を使用して画像を厳密に提供する例に従いましたが、Firefox で画像を表示するとブラウザーがハングし、IE で表示すると「行: 0 のスタック オーバーフロー」が発生します。
IHttpHandler のコード
上記で定義した IHttpHandler を呼び出す JavaScript コードは次のとおりです。
最後に、「プレースホルダー」である img タグを次に示します。
javascriptが制御不能になっているように見える理由について、私は混乱しています...
asp.net - ASP.NET:ハンドラーからセッションにアクセスする方法は?
WebFormsページにリダイレクトする前に、ハンドラーページからSessionにいくつかの値を保存しようとしています。これにより、 Session値が取得され、WebFormが事前に入力されます。
context.Session
オブジェクトがnullであることを除いて。
ハンドラーからセッション状態にアクセスするにはどうすればよいですか?
.net - web.config の ASP.NET HttpHandlers および scriptProcessor パス
web.config で http ハンドラーを定義しています。
scriptProcessor は、これを実行しているサーバーが 64 ビットであるため、 Framework64フォルダーを指します。ただし、開発マシンは 32bit です。つまり、web.config をチェックアウトしてFramework64をFrameworkに変更しない限り、ハンドラーは実行されません。
どのマシンでも実行できるようにこれを記述する方法はありますか? 32ビットと64ビットの両方?役立つ環境変数または MSBuild スクリプトはありますか?