なか日記

一度きりの人生、楽しく生きよう。

IIS Expressでlocalhost以外のアドレスでアクセスする方法

Visual Studioでデバッグ実行すると、デフォルトでは http://localhost:63543/ みたいなアドレスでアクセスすることになりますよね。

しかし、OAuthのコールバック先として、localhost が指定できない場合など、localhost 以外のホスト名でアクセスしたい場合もあると思います。

「hosts ファイル等で名前解決できるようにしてアクセスすれば良いだけでしょ」と思ったのですが、そうでもなかったのでブログに書いておきます。ちなみに、127.0.0.1でアクセスする場合にもこの処置が必要です。

hosts ファイルの編集

C:\Windows\System32\drivers\etc 配下にある hosts ファイルにアクセスしたいホスト名を登録します。

127.0.0.1    mydomain.com

IIS Express の applicationhost.config を編集

C:\Users[ユーザ名]\Documents\IISExpress\config 配下に格納されている IIS Express の構成ファイル(applicationhost.config)を編集します。

以下のように<binding protocol="http" bindingInformation="*:63543:mydomain.com" />を追記します。

<site name="WebApplication1" id="67">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="c:\users\nakaji\documents\visual studio 2013\Projects\WebApplication1\WebApplication1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:63543:localhost" />
        <binding protocol="http" bindingInformation="*:63543:mydomain.com" />
    </bindings>
</site>

URLの予約

このコマンドを実行しないと、管理者権限で起動した Visual Studio 以外で IIS Express を起動できなくなります。

管理者で起動したコマンドプロンプトから以下のようなコマンドを実行します。

> netsh http add urlacl url=http://mydomain.com:63543/ user=Everyone

URL 予約を正常に追加しました

プロジェクトのURL変更

プロジェクトのプロパティで、プロジェクトのURLを変更しておきましょう。

f:id:nakaji999:20140919021305p:plain

やるべきことは以上

以上で設定は完了です。Visual Studioから実行して意図したホスト名でアクセスできていることを確認しましょう。

なんてえらそうなこと書いたけど

No1さん(@)としばやん(@)に教えてもらったことでした。

ミスターNo.1さん

しばやん

以前ブログに書かれてるのに気がついた。

みなさん、いつもありがとうございます

いつもいろいろ教えてくれてありがとうございます。おかげで毎日楽しく生きてます。

追記(2015/7/17)

Visual Studio 2015 からかどうかはわかりませんが、プロジェクトの設定で「すべてのユーザーにサーバー設定を適用(プロジェクト ファイルに格納)」にチェックが入っている場合は、ソリューションを保存してるフォルダにある .vs (隠しフォルダ)に applicationhost.config が格納されいるようです。

f:id:nakaji999:20150717010621p:plain