3

私は大企業を持っています。現在、Windows 2003 サーバー IIS 6 でホストされている従来の asp と asp.net が混在する Web サイト。

出力元のページに関係なく、すべてのページ出力をいくつかの html 変更で変更する必要があります。asp の部分は本当に古く、構造が悪いため、必要なすべての変更を適用するために「一般的なインクルード」を実行することはできません。最後に、いくつかの asp ページは複数の OCX/COM オブジェクトからコードを出力します... .net への完全な書き直し/移行を既に計画していますが、残念ながらそれは長期的なプロジェクトであり、すぐに行くことはできません。

そのため、Win 2008 R2、IIS 7.5 に移行し、.net httpmodule を使用してすべての出力を変更できる統合パイプライン モードを利用することを検討 (およびテスト) していました。すべて正常に動作します: asp および asp.net を介してレンダリングされたページに html コードを正しく「注入」できますが、従来の ASP ページがポスト (x-www-form-urlencoded ) モジュール。

統合パイプライン モードを使用している場合、従来の ASP では Request.Form オブジェクトがまったく欠落しているようで、使用するたびにエラー '80004005' がスローされます。Request.QueryString ではなく、正しく機能しています。

従来の ASP によってレンダリングされたページを変更する利点が失われるため、従来のパイプライン モードに戻すことはしません。ここでの Isapi フィルターの使用は悪夢であり、その方向には立ち入りません。

統合パイプライン モードがアクティブなときに Request.Form をクラシック ASP で動作させるための回避策を知っている人はいますか。ブラウザに?

助けてくれてありがとう、Squiffy

編集: 残念ながら、この問題の解決策は見つかりませんでした。それまでの間、最新のソリューションを使用してサイトをゼロから完全に再構築しました (やった!)。助けてくれてありがとう!

4

4 に答える 4

1

せっかくなので、「Request.Item()」も試してみましたか?

于 2015-10-08T17:25:51.493 に答える
1

統合モード + モジュールを使用してクラシック ASP で Request.Form を読み取るときにエラーが発生する実際の理由は、クラシック ASP がバイナリ POST データの読み取り/処理を 1 回しか処理できないためです。

これは、2 回目の読み取りで何があってもエラーが発生することを意味します。

BinaryRead メソッドのドキュメントには、次の動作が記載されています。

BinaryRead メソッドは、POST 要求の一部としてクライアントから送信された生データを読み取るために使用されます。このメソッドは、たとえば Request.Form コレクションを使用して POST 要求で送信されたフォーム データを表示するのとは対照的に、このデータへの低レベル アクセスに使用されます。BinaryRead を使用した後、Request.Form コレクション内の変数を参照すると、エラーが発生します。逆に、Request.Form コレクション内の変数を参照した後で BinaryWrite を使用すると、エラーが発生します。

実践でよく見かけます。

この場合、.NET httpmodule が POST データを読み取っている可能性があり、その結果、Classic ASP Request.Form がエラーになるか、またはその逆になります。

于 2019-04-18T15:43:00.107 に答える