ihttphandlerを使用してサービスが実装される.netにRESTFULURLを実装する
-
12-10-2019 - |
質問
ASP.NETでRESTFULサービスを実装したいと思います。 .NET 2.0およびIIS 5+と互換性があることを望んでいます。 ASP.NET MVCまたはRESTスターターキットを使用しないように制約されています。インターネットで読むことで、httphandlersを使用して実装できることを学びました。問題は、リクエストがPOSTリクエストとして送信されることです。そして、私は次のようになりたいです:
http://abc.com/myservice/mymethod1/とhttp://abc.com/myservice/mymethod2/
これの回避策はありますか?
ありがとう、vamyip
解決
あなたの最良の選択肢は、URL書き換えを使用することです。これはIIS5では自明ではありません。私が知っている方法は次のとおりです。
方法1 - ISAPIフィルター
これらは、着信要求を操作できる低レベルのモジュールです。これらの1つのプログラミングは、毛むくじゃらでデバッグが困難です。あなたがこのルートに行くなら、あなたはすでにのように構築されたものを使用する方が良いです ISAPI_REWRITE.
方法2 -ihttpmodule
これらは、アプリケーションから簡単に追加/削除できるASP.NETモジュールを管理しています。繰り返しますが、ような事前に構築されたコンポーネントを使用する方が良いです urlrewriter.net. 。これらのいずれかを使用することの問題(脳に言及しているように)は、次のようにすべての着信要求をASP.NETにマッピングするようにIIS 5を構成する必要があるということです(次のように)。リンク):
- IISを開き、「ホームディレクトリタブ」に移動します
- 「構成」を選択します
- 追加]をクリックし、実行可能ファイルボックスに「C: Winnt Microsoft.net Framework v2.0.50727 AspNet_isapi.dll」を入力します。ファイル拡張子の場合は、「。*」を入力します。最後に、「ファイルが存在する」がチェックされていないことを確認してください。
興味深いことの1つは、ASP.NET自体がISAPIモジュールであるということです:)
これらのツールのいずれかを使用してURLを操作できるようになったら、Default.aspxページ(または使用するハンドラー)で処理されるRESTFUL URLを簡単に書き換えることができます。
他のヒント
IIS 7.0以上のみの制限を許可できる場合は、URLの書き換えを使用できます http://www.iis.net/download/urlrewrite それをかなり簡単にするために。
IIS 5+をサポートする必要があるのはなぜですか?これは11年前のテクノロジーであり、人々が最近のバージョンを支持してそれらのプラットフォームから抜け出すことを願っています。また、これらのプラットフォームのいくつかのサポートはすぐに終了します。
Windows XPを実行している開発者が懸念される場合、IIS Expressにはバージョン7.5+機能が含まれており、すべてのプラットフォームWindows XP以上で利用できることを指摘します。
IIS 5では、IISに追加の構成がなければ、非ASP.NETファイル拡張機能を処理できないため、これは難しいと思います。つまり、.aspxなどで終わるURLに限定されています。ISのすべてのURLを処理するためにASP.NETをマッピングする必要があるURLを処理するために、ある種のURL書き換え、または何らかのハッキー404リダイレクトを導入する必要があります。
正しいマッピングを所定の位置に配置したら、ihttphandlerを配線することができますが、入っているリクエストを解析して、/myservice/mymethod1/for/myservice/mymethod2/を使用する必要があります。方法が簡単な場合は、正規表現でこれを簡単に行うことができます。
のようなシンプルなハンドラーから始める必要があります これ 1。