0

IHttpHandlerクラスを開発し、それをとして構成しverb="*" path="*"たので、htmlを動的に生成するテストWebサイト用の独自のREST実装を作成するために、すべてのリクエストを処理しています。

したがって、.cssファイルのリクエストが届いたらcontext.Response.WriteFile(Server.MapPath(url))、写真などでも同じように処理する必要があります。すべて自分で応答する必要があります。

私の主な問題は、相対URLをアンカーに配置するときです。たとえば、このようなリンクのあるメインページが<a href="page1">Go to Page 1</a>あり、ページ1には別のリンクがあり<a href="page2">Go to Page 2</a>ます。ページ1と2は同じレベルにあるはずです(http://host/page1そしてhttp://host/page2、[ページ2に移動]をクリックすると、ハンドラーで次のURLを取得しました:~/page1/~/page2... url = urlを実行する必要があるため、これは面倒です。 .SubString(url.LastIndexOf('〜'))をクリーンアップしますが、問題はなく、この動作は完全に正常であると感じています。

今は対応できますが、将来的には頭痛の種になると思います。の情報を使って絶対URLですべてのリンクを設定しようとしましたcontext.Request.Urlが、それも苦痛です:Dなので、このようなことを行うためのより良い方法があるかどうか知りたいです。

私はWeb開発にかなり慣れていないので、URLやHttpなどの基本的なことをスキップしているので、遠慮なく私にはっきりとした応答をしてください。

よろしくお願いします。

4

1 に答える 1

2

まず最初に、ブラウザーに配信される出力HTMLと、具体的には説明しているリンクを確認します。

あなたはリンクがそうだと言いますが、<a href="page2">Go to Page 2</a>あなたの結果によれば、私はそれがもっと似ていると思います<a href="~/page2">Go to Page 2</a>。これは、ハンドラーにブレーキポイントを配置することで確認できます。「〜/ page1 /〜/ page2」でトリガーされると、ブラウザーのアドレスバーを確認すると、「http://www.example.com/」のように表示されます。 page1 /〜/ page2 "

まず、リンクを生成するコードを確認する必要があります。ある種の関数呼び出しから生成された場合は、スクリプトアドレスではなくWebアドレスを取得するようにしてください。

いずれにせよ、第1レベルのページを切り替えるこれらの種類のリンクはすべて、現在表示されているページではなく、Webサイトのルートを基準にした場所であることを示す「/」で始まる必要があります。

于 2010-12-18T22:55:42.780 に答える