前に404.ASPを理解したとき、私はすべてのプログラムコードを404.ASPに書き込み、プログラムコードを100,000行もシミュレートしていることを実現するために空想しました。
ASPの翻訳を見るまで、404をシミュレートした静的ページを生成するというアイデアが私の心に登場しました。 。
<! - #include file = bin/404_qury->
<%
ケースbin_commandを選択します
ケースビン
server.transfer(bin/web)
ケースアップロードファイル
server.transfer(bin/send-stream)
ケース他のケース
server.transfer(bin/send-404)
[選択]を終了します
%>
hehe、それを明白に言うと、それが達成するのが非常に機能的であるかどうかを判断するのはBin_Commandに基づいています。 。 PHPには書き直しがありません。通常は実用的なpath_infoであり、このプログラムはserver.transferによってpath_infoによってシミュレートされます。
Bin/404_Queryのソースコードは次のとおりです。
<%
urls = mid(request.querystring、strung(request.querystring、80)+4)
IF IF IF(urls、/)> 0 then
bin_command = left(urls、gruts(urls、/)-1)
getFile = falple(urls、bin_command&/、)
それ以外
bin_command = bin
ifを終了します
%>
このコードは、主にBIN_Commandが実行されるかどうかを決定します。
など:demo.com/index5.html、その後bin_command = bin、あなたは知っていることができます
demo.com/uploadfiles/123456.gif(このファイルは実際にはファイル/123456.gifに対応しています)、bin_command = uploadfilesでは、bin/send-streamに与えることができます。私が記事を書いた記事を参照することができますap practical binarywriteとadodb.streamを参照してください。
demo.com/111/222、その後bin_command = 111″、選択した場合に定義はありません。
このようにして、すべての訪問者(Baidu、Googleを含む)を含む、このサイトは静的なページです。私の知る限り、国内のIISホストの99.9%はISAPI_REWRITEをサポートしていません。リソースが深刻すぎてすぐにキャンセルされるため、一度遭遇しました。
以下は、リファレンスのために背面に添付されているASP Learning Onlineで見たものです。
Server.Transferメソッドを呼び出し、最初のページの実行をすぐに終了し、2番目のページの実行を開始します。
最初のページが応答バッファーの書き込みを開始すると、2番目のページがバッファを置き換える代わりに追加されます。
バッファが開いている場合、この方法は、ASPバッファーが閉じられていない場合、HTTPヘッドを変更します。
他のアプリケーションに送信されると、開始ページアプリケーションとセッションオブジェクトにはアプリケーション情報が含まれます。
模範的な例
次の例では、サーバーを使用する方法について説明します。Transferメソッド。
1。
<html>
<body>
<h3>ステップ1-フォームページ</h3>
<テーブルボーダー= 1>
<tr>
<th> post </th>
<td>
<form action = page2.asp method = post>
<入力型=テキスト名= name/>
<入力タイプ=送信値= submit/>
</form>
</td>
</tr> <te>
</tr>
<th> get </th>
<td>
<form action = page2.asp method = get>
<入力型=テキスト名= name/>
<入力タイプ=送信値= submit/>
</form>
</td>
</table>
</body>
</html>
2.次のコードをpage2.asp(引用なし)として配置します。
<%@language = vbscript%>
<html>
<body>
<H3>ステップ2-移動ページ</h3>
<%
ケースUCaseを選択します
ケースポスト
Server.Transfer Page3a.asp
ケースGET
Server.Transfer Page3b.asp
ケース他のケース
response.write未知のhttp動詞が使用されました。
[選択]を終了します
%>
</body>
</html>
3.次のコードをPage3a.asp(引用なし)として配置します。
<%@language = vbscript%>
<H3>ステップ3A -POST結果</h3>
<p> hello <%= request.form(name)%> </p>
4.次のコードをpage3b.asp(引用なし)として配置します。
<%@language = vbscript%>
<h3>ステップ3b-結果</h3>
<p> hello <%= request.querystring(name)%> </p>
注:最後の2ページは、不完全なHTMLページです。 これは、両方のページが2番目のページバッファーに追加されるためです。
このインスタンスをテストするには、page1.aspを参照してください。