過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです.
画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.HttpListenerを使ってサーバーを建てたのですがlocalhostしか動作しない感じでして、いろいろ調べてみたら細かいところに罠が…
ただ私が気が付かなかっただけなんですけどね
Suffixについて
HttpListenerではURLの設定をSuffixというものでします。例えばlocalhostの80番ポートならこのような感じ
http://localhost:80/ 又は http://localhost/
…なのですが、すべてのURLを受け付けるようにしようと思ったらワイルドカードを使うことになると思います。
ただSuffixの指定ではワイルドカードは*ではなく+になるそうですね…
http://+:80/
これはHttpListenerの内部がIISと同じもの?netshによってファイアーウォールを開けることができるのですが、システム内部の動作をHttpListenerでラッパーにしてるだけのようです。
そのため、ファイアーウォールを開ける際は動作させているプログラムではなく、systemとして設定して上げる必要があるみたいです。
URLの予約
コマンドプロンプトにてURLの予約をすることができます。管理者権限が必要です。
URLを予約する場合は
netsh http add urlacl url=http://+:45454/ user=Everyone
逆にURLの予約を解除する場合は
netsh http delete urlacl url=http://+:45454/
もしC#コードにてURLの予約をする場合はVerbにrunasを指定して上げる必要があります。
Process proc = new Process(); proc.StartInfo.FileName = "netsh"; proc.StartInfo.Arguments = "http add urlacl url=http://+:80/ user=Everyone"; proc.StartInfo.Verb = "runas"; proc.Start(); proc.WaitForExit();
ついでに私が公開したHttpListenerのライブラリもこの方法でうまくいきました。やったね
ローカルで使うWebサーバーを立てる
Local HTTP Server Library