HttpListenerでURLを受け付ける


HttpListenerを使ってサーバーを建てたのですがlocalhostしか動作しない感じでして、いろいろ調べてみたら細かいところに罠が…
ただ私が気が付かなかっただけなんですけどね

Suffixについて

HttpListenerではURLの設定をSuffixというものでします。例えばlocalhostの80番ポートならこのような感じ
http://localhost:80/ 又は http://localhost/

…なのですが、すべてのURLを受け付けるようにしようと思ったらワイルドカードを使うことになると思います。
ただSuffixの指定ではワイルドカードは*ではなく+になるそうですね…

http://+:80/

これはHttpListenerの内部がIISと同じもの?netshによってファイアーウォールを開けることができるのですが、システム内部の動作をHttpListenerでラッパーにしてるだけのようです。
そのため、ファイアーウォールを開ける際は動作させているプログラムではなく、systemとして設定して上げる必要があるみたいです。

URLの予約

cmd-netsh-res

コマンドプロンプトにてURLの予約をすることができます。管理者権限が必要です。

URLを予約する場合は

逆にURLの予約を解除する場合は

もしC#コードにてURLの予約をする場合はVerbにrunasを指定して上げる必要があります。

ついでに私が公開したHttpListenerのライブラリもこの方法でうまくいきました。やったね
ローカルで使うWebサーバーを立てる
Local HTTP Server Library

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">