MS_IISExpress - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(IIS、Express関連)
- IIS Express
- Visual Studio
- WebMatrix から Visual Studio標準同梱へ。
- 昨今、高度な開発用 Web サーバが無いと厳しいこともあり。
補足(位置づけ): IIS Express は
IISと同じコードベースの、開発者向け軽量版である。
IIS IIS Express Kestrel 実行 Windows サービス ユーザー プロセス ユーザー プロセス 管理者権限 必要 不要 不要 対象 本番 開発 開発・本番(ASP.NET Core) OS Windows Windows クロスプラットフォーム 「本番と同じ挙動を開発機で再現できる」点が価値だった。
ただし ASP.NET Core以降は
Kestrel が既定になり、IIS Express の出番は減っている
(launchSettings.jsonでプロファイルを選ぶ)。
applicationhost.config に設定する。
- 基本的には、Project ファイルから自動的に設定が行われる。
- 必要に応じて、
applicationhost.configを手書き修正する。
| Visual Studio | 格納場所 |
|---|---|
| 2015 以前 | C:\Users\[ユーザ名]\Documents\IISExpress\config\ |
| 2015 以降 | [ソリューションのディレクトリパス]\.vs\config\ |
補足(
.vsフォルダは共有しない): 2015 以降の格納先である
.vsフォルダは、.gitignoreに入れるのが標準である
(Visual Studio のテンプレートも既定で除外する)。このため、
applicationhost.configを手書きした設定はリポジトリに残らない- 他の開発者や CI では再現しない
という点に注意が要る。
チームで共有したい設定は.csproj側(<UseIISExpress>など)や
launchSettings.jsonに書くか、
手順を README に残す必要がある。
Project ファイルで以下の様な設定を行う。
<UseIISExpress>false</UseIISExpress>
<Use64BitIISExpress />Visual Studioのメニューからは
[ツール]→[オプション]→[プロジェクトおよびソリューション]
→[Web プロジェクト]→
[Web サイトおよびプロジェクト用 IIS Express の 64 ビット バージョンを使用]を ON。
レジストリで設定する場合。
| # | 項目 | 値 |
|---|---|---|
| 1 | キー | HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\xx.0\WebProjects |
| 2 | 値名 | Use64BitIISExpress |
| 3 | データ | 1 |
補足(32bit / 64bit を合わせる): 32bit の COMや
ODBC ドライバに依存するアプリでは、
IIS Express のビット数を本番の IISに合わせる必要がある。
詳細は64bit対応を参照。
可能らしい。
-
Dockerから接続する場合
「host.docker.internal」が使用できる。 - 以下の様に
applicationhost.configに定義を追加する。
<!-- AS-IS -->
<binding protocol="https" bindingInformation="*:44300:localhost" />
<!-- TO-BE -->
<binding protocol="https" bindingInformation="*:44300:localhost" />
<binding protocol="https" bindingInformation="*:44300:host.docker.internal" />-
host.docker.internalは、以下の様に名前解決される。- コンテナ側は、
192.168.65.2 - ホスト側は、
192.168.0.6
- コンテナ側は、
可能らしいが、潔く IISにデプロイした方が早そう。
(HTTPS 化で Let's Encrypt の証明書を発行する等の色々があるので)
-
bindingInformationに設定しても、hostsに設定してもイイらしい。 - ホスト外からアクセスする場合に必要
-
Windows Defender ファイアウォールを無効化するか、通す。
-
Visual Studioを管理者実行で実行する。
管理者実行しない場合は、以下コマンドで URL 予約。netsh http add urlacl url=http://fqdn:xxxxx/ user=Everyone
-
いずれも可能らしい。
クライアント証明書については ASP.NET+クライアント証明書を参照。
44300 - 44399 の範囲しか設定できないらしい。
補足(理由): この範囲は、Visual Studio のインストール時に
netsh http add sslcertで自己署名証明書があらかじめ予約されている
ためである。範囲外のポートで HTTPS を使いたい場合は、
自分で証明書をポートにバインドする必要がある。netsh http add sslcert ipport=0.0.0.0:44500 certhash=<拇印> appid={GUID}開発中に「なぜか 44300 番台しか動かない」と悩む定番の箇所である。
補足(現在の開発サーバー事情): ASP.NET Coreでは
状況が変わっている。
プロファイル 内容 http/https(Kestrel)既定。クロスプラットフォーム。速い IIS Express IIS 固有の機能(Windows 認証、モジュール)を試したいとき IIS 本番同等の検証
launchSettings.jsonで切り替える。
本番が IISなら、一度は IIS Express か IIS で動かして確認する
のが安全である(ANCM 経由の挙動差があるため)。
-
IIS Expressの紹介 - @IT
https://www.atmarkit.co.jp/fdotnet/scottgublog/20100702iisexpress/iisexpress.html -
IIS Expressでlocalhost以外のアドレスでアクセスする方法 - なか日記
https://blog.nakajix.jp/entry/2014/09/19/022536 -
IIS Express を外部公開する - Qiita
https://qiita.com/ledsun/items/ca77c60aad424438cdd7
-
Running IIS Express from the Command Line
https://learn.microsoft.com/iis/extensions/using-iis-express/running-iis-express-from-the-command-line -
Running IIS Express without Administrative Privileges
https://learn.microsoft.com/iis/extensions/using-iis-express/running-iis-express-without-administrative-privileges
Tags: 移行, Windows, IIS, .NET開発, ツール類