問題タブ [httpmodule]
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-mvc - 構成されたマネージド モジュールでの Asp.net MVC エラー
私は非常に単純なカスタム認証を持っていHttpModule
ます。しかし、マネージド リクエストに対してのみ実行したい (静的リクエストに対しては実行しない)。
Asp.net MVC は、IIS7 Web サーバーの構成セクションを自動的に追加します。
独自のモジュールを追加すると、その も設定されますpreCondition="managedHandler"
が、runAllManagedModulesForAllRequests="true"
親<module>
要素があるため、 mypreCondition
は設計上無視されます (MSDN で読んだように)。
私が設定しようとすると:
エラーが発生します。
web.config
この設定を機能させるには、他に何 (他のどのモジュール) を設定する必要がありますか?
c# - URLがファイルのリクエストであるかどうかをテストするHttpModule / HttpApplication
HttpModule 内で、URL がファイルで終わるかどうかを確認したいと思います。
すなわち。www.example.com/images/images.css
そして、ファイル拡張子は何ですか。cssまたはjs
Begin_Request イベント ハンドラーでは、HttpApplication にネストされた Request オブジェクトの Url プロパティを使用して、現在、String 操作を使用してファイル拡張子を切り取っています。これを行うより良い方法はありますか?
c# - Asp.Net 認証モジュール
ASP.Net で認証モジュールを作成しましたが、ロジックが高価であるため、リソースが匿名アクセス用に構成されている場合、認証モジュールのロジックを実行したくありません。
認証を必要としないページと同じディレクトリに認証が必要なページがあります。私はこれを制御できません。URLAuthorizationModule の前にリソースが匿名アクセスを許可するように構成されていることを確認する簡単な方法はありますか?
現在、私は「感じる」権利を行う次のことを行っています。どんな助けでも大歓迎です。
c# - Global.asax の問題
私は HttpModule を開発し、Global.asax を使用しています。HttpApplication から派生するクラスを開発しましたが、クラスの Application_Start メソッドが実行されません (Application_Start の先頭にファイルを作成しますが、ファイルが作成されないため、Application_Start が実行されないと思います)。VSTS2008 + C# + .Net 3.5 を使用しています。
何が間違っていて、どのようにデバッグするのですか? Global.asax を Web サイトの仮想ディレクトリのルート ディレクトリにコピーする必要があることを確認したいのですが、正しいですか? HttpModule を実行するには、web.config で何かを構成する必要がありますか?
events - プロバイダーを処理するときに現在のプリンシパルを設定するために HttpModule で処理するイベントはどれですか?
HttpContext.Current.User にこれらが含まれるように、プリンシパルと ID が現在のスレッドに設定されているカスタム HttpModule と統合する必要があるという問題に直面しています。しかし、彼らが使用したイベントハンドラー (PostAcquireRequestState) が遅すぎる気がします。
HttpModule でプロバイダーの初期化が発生する前に処理するのに最適なイベントはどれですか? 私が望むのは、カスタム プロバイダーが正しいプリンシパルと ID で動作することだけです。
.net - ローカリゼーションのための .net URL の書き換え、フォーム認証と loginUrl に関する問題
HttpModule を使用して、多言語サイトの URL を書き換えています。HttpModule では、BeginRequest イベントのハンドラーを追加し、カルチャ名を含むパスの最初の部分を探しています。
たとえば、/fr-ca/index.aspx は /index.aspx に書き換えられ、スレッドのカルチャと ui カルチャが 3084 に設定されます。これは正常に機能します。
フォーム認証を入力します。フォーム認証はマップされていない URL でも正常に機能しますが、ユーザーが承認されていない場合は、web.config の認証セクションで設定されている loginUrl にリダイレクトされ、要求された URL へのリダイレクトを処理するために ?ReturnUrl= クエリ文字列パラメーターが含まれます。ユーザーが認証されると、ページ。
ユーザーがデフォルト以外の言語でページを要求した場合、ここで 2 つの問題があります。
- loginUrl は、書き換えられる前にパスを無視します
- ReturnUrl パラメーターも生のパスを無視していました。
Request.RawUrl の代わりに Request.Url.PathAndQuery に相当します。
代わりに、AuthorizeRequest イベントでパイプラインにジャンプすることはできません。これは、複数の場所のパスを持つ 1 つの web.config ファイルを使用しているため、考えられるすべてのカルチャ値から保護する必要があるためです。これも最初の問題を修正しません。
リフレクターで FormsAuthenticationModule を調べたところ、#1 と #2 を解決するためにどこを変更できるかがわかりますが、もちろん封印されています。
私もたくさん閲覧しましたが、実行可能な解決策は見当たりません。
FormsAuthenticationModule は、UrlAuthorizationModule で生成された 401 ヘッダーをチェックしています。loginUrl ページでリファラー (空) を探すと、それが確認されます。
何かご意見は?
編集#1
IIS 6 を使用していますが、IIS 7 はオプションではありません。
編集#2
ローカル リソースを生成したときに (デザイン ビュー: [ツール] > [ローカル リソースの生成])、IDE がページ ディレクティブに以下を追加したため、ログイン ページは既定のカルチャ/UI カルチャを取得しませんでした。
culture="auto" meta:resourcekey="PageResource1" uiculture="auto"
vs.net 2008 ではこれに注意してください。少なくともこれにより、デフォルトのカルチャが参照されないという問題の 1 つが解決されますが、#1 と #2 はまだ未解決です。
編集3
パイプライン イベントの 1 つにジャンプして独自のリダイレクトを実行できることを望んでいましたが、System.Web.Security.UrlAuthorizationModule OnEnter メソッドの反映で、401 ヘッダーが設定されると、メソッドが application.CompleteRequest を呼び出すことがわかりました。お察しのとおり、EndRequest イベントに進みます。これは、FA モジュールがリダイレクトを実行するためにジャンプするものです。残念ながら、自分のリダイレクトを実行するために前にジャンプすることはできません! この問題に遭遇する人がこれ以上いないことに驚いています。
例:
フォーム認証によって保護されている物理フォルダー /members/ にメンバーのセクションがあります。
web.config には、次のものがあります。
と...
認証されていないユーザーが /members/ のインデックス ページを要求すると、FormsAuthenticationModule によって上記の認証セクションから loginUrl にリダイレクトされます。また、要求されたページに ?ReturnUrl パラメーターを追加します。
これは、ユーザーが既定のカルチャを使用して Web サイトを閲覧している場合に問題なく機能しますが、私の HttpModule は、パスの最初の部分にあるカルチャ名の存在に基づいてカルチャを設定します。
そのため、/fr-ca/members/index.aspx は /members/index.aspx に書き換えられ、カルチャ/UI カルチャがカナダ フランス語に設定されます。残念ながら、FormsAuthenticationModule は、元の URL ではなく、書き換えられた URL を使用して loginUrl ページにユーザーを送信します。そのため、カルチャ設定が失われ、リダイレクト URL が正しくありません。
@グレッグに役立つことを願っています
asp.net - クエリ文字列がない場合、HttpHandlerをスキップすることは可能ですか?
動的画像リサイザーをHttpHandlerとして作成しました。画像拡張子が付いているものはすべて自動的に呼び出されるため、たとえば次のようになります。
http://www.mysite.com/picture.jpg?width=200&height=100
ハンドラーを実行し、適切な応答ヘッダーを含むサムネイル画像を返します。ただし、クエリ文字列なしで呼び出された場合、ハンドラーにリクエストを「パススルー」させたいと思います。
http://www.mysite.com/picture.jpg
ハンドラーを介して実行しなかった場合のように、ヘッダー情報を含む画像を返すようにします。これは、ヘッダー情報を手動でコーディングしなくても可能ですか(ファイルストリームを開いて最終書き込み日などのデータを読み取る必要があります)、またはハンドラーをHTTPModule
代わりに変換する必要がありますか?
configuration - バグ:IIS7管理リクエスト
(IIS構成に関するものなので、この質問をServerFaultにも投稿する必要があるかどうかわかりませんか?)
IIS7では、次の方法で、管理対象コンテンツに対して実行するようにモジュールに指示できます(したがって、静的コンテンツの提供が高速化されます)。
だが。要求されたURLにファイル名(拡張子付き)も含まれている限り、これは問題なく機能します。省略した場合、IIS7は静的コンテンツが必要であると見なし、管理対象モジュールは実行されません。
default.aspx
IIS7のデフォルトのドキュメントを手動で設定した場合、最初のドキュメントはです。違いはありません。違いはありません。私には、これはバグのように見え、歩き、聞こえます。そしてそれはバグです!なんで?私が最初のものを要求するとき、それは管理された要求ですからね。もちろん。ただし、IIS7はそれを静的リクエストとして扱います。それで?バグです。このリクエストは管理対象として扱われる必要があります。
ファイル名を含まないURLリクエストに対してマネージドハンドラーを実行するようにIIS7を説得するにはどうすればよいですか?
考えるのを手伝ってください
私が考えることであなたを少し助けさせてください:私が再注文するならばsystem.webServer/handlers
、私はこれを解決することができると確信しています。StaticFile
を指す最後のハンドラーの前に、StaticFileModule
ディレクトリ要求で統合asp.netハンドラーを実行する必要がありますDefaultDocumentModule
。DirectoryBrowsingModule
または、ディレクトリ要求にデフォルトのドキュメントを追加する独自のハンドラーを作成します。私はこれらの1つがそれを解決するはずだとかなり確信しています。しかし、どのように構成/開発する必要がありますか?
c# - C#ASP.NET HttpModules:HttpApplicationイベント
WebアプリケーションにHttpApplication(Global.asax)があります。これを使用して、未処理の例外をキャッチしてログに記録し、WebFormURLRoutingを設定します。これはすべて機能しますが、このコードをアプリケーションフレームワークに移動したいと思います(つまり、Global.asax.csにはありません)。
フレームワークでHttpApplicationクラスを作成しようとしましたが、イベントをオーバーライドできないようです。とにかく、私はこれらのイベントを消費する代わりにHttpModuleを使用できると信じています、これを行います:
1)Global.asaxの必要性を完全に排除しますか?
2)これはスケールアップにどのように影響しますか?つまり、最終的にはWebファームでアプリケーションを実行します
3)ファイルのアップロードやファイルのダウンロードなどの他の処理を行うHttpHandlerがありますが、使用するHttpModule / HttpHandlerの数に制限はありますか、それともオーバーヘッドを減らすためにこれらを組み合わせる必要がありますか?
コメントをいただければ幸いです
c# - HttpResponse フィルターが何も返さない
WebResource.axd ハンドラーの呼び出しをインターセプトするために使用している HttpModule を作成したので、javascript で後処理を実行できます。
モジュールは Response.Filter ストリームをラップしてその処理を実行し、その変更を基になるストリームに書き込みます。
私が抱えている問題は、スクリプトがブラウザに返されないことです。
したがって、パススルーとして機能する非常に単純な例として、モジュールは次のようになります。
受け取ったものを出力するだけの ResourceFilter は次のようになります。
モジュールとフィルターが呼び出されていることをアタッチして確認できますが、WebResource.axd URL を参照しても何も返されません。
このパターンを使用して、aspx ページで処理を実行するモジュールを実装しましたが、問題なく動作します。この作業を妨げる WebResource.axd との相互作用について何かがあるようです。