VisualStudioで配置したWebアプリをIISサーバに公開する

#記事一覧
[Visual StudioのASP.NET Core MVC で Web アプリを作成してみた（記事一覧）](https://qiita.com/yuta-sasaki/items/31307b88f7234b92f728)

#VisualStudioでWebアプリをローカルフォルダに配置する
配置するローカルフォルダを設定するため、ソリューションエクスプローラのConnected Servicesをダブルクリックします。
「公開」タブの「新規」を選択、表示された公開ウィンドウで、ターゲットに「フォルダ」を選択して、配置するフォルダを指定します。
<img width="681" alt="VisualStudioで配置したWebアプリをIISサーバに公開する1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/52bc8dff-08fe-69c0-2c72-4be7f37e0a20.png">
フォルダを選択した状態で、「発行」ボタンを押します。
<img width="684" alt="VisualStudioで配置したWebアプリをIISサーバに公開する2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/5261f27f-1fce-27e2-94eb-ce8e4f197577.png">
「発行」すると、ビルド生成物（Webアプリ）が指定したフォルダに配置されます。
<img width="312" alt="VisualStudioで配置したWebアプリをIISサーバに公開する3.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/46bbc1d2-cb29-bde1-acab-3d7807a956db.png">

#Web配置発行の Web サーバーを構成する (オフライン配置)
#####IISサーバに必要なプラットフォームをインストール
プラットフォームのインストーラ「Microsoft Web Platform Installer」をインストールします。
https://www.microsoft.com/web/downloads/platform.aspx

Microsoft Web Platform Installerを起動して以下のプラットフォームをインストールします。
既にインストールされている場合は不要です。

* <b>ASP.NET MVC 3.と4</b><br>
  MVC 3 アプリケーションを実行するために必要なアセンブリがインストールされます。
* <b>.NET Framework 4.*.*</b><br> 
  これは、このバージョンの .NET Framework でビルドされたアプリケーションを実行するために必要です。
* <b>IIS 7 推奨構成</b><br>
  これは、Web サーバー上でWeb サーバー (IIS) の役割が有効になり、
  ASP.NET アプリケーションをホストするために必要な IIS モジュールとコンポーネントのセットがインストールされます。
* <b>Web 配置ツール 2.1以降</b><br>
  これは、Web 配置 (およびその基になる実行可能ファイル Msdeploy.exe) がサーバーにインストールされます。
  Web 配置は IIS と統合されており、Web パッケージをインポートおよびエクスポートできます。

#####WebアプリをIISサーバに公開する
[追加したサイト](https://qiita.com/yuta-sasaki/items/7c73c9214fa04df7452e)のURLにアクセスした時に、Visualstudioで配置したWebアプリのURLにリダイレクト（転送）するよ様にIISマネージャで設定します。
IISマネージャのHTTPリダイレクトを選択します。
<img width="707" alt="VisualStudioで配置したWebアプリをIISサーバに公開する5.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/821245ec-2ee0-dfdf-a24e-ad2839ad9f6f.png">
「このリダイレクト先に要求をリダイレクト」に、リダイレクトするURLを設定します。
<img width="709" alt="VisualStudioで配置したWebアプリをIISサーバに公開する6.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/929c45db-c851-133e-0f31-cf0b44e124ec.png">

リダイレクトするURLには、VisualStudioで発行したWebアプリを実行したときのURLを指定します。

<img width="707" alt=VisualStudioで配置したWebアプリをIISサーバに公開する12.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/caf82556-ac5e-cb18-7a5d-da65457ab187.png">

#####リダイレクトを設定したIISのサイトにアクセスする
リダイレクトを設定したサイト（ http://localhost:87 ）にアクセスします。
すると、 https//localhost:5001 にリダイレクトされますが、ページを表示できていません。
<img width="599" alt="VisualStudioで配置したWebアプリをIISサーバに公開する7.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/a1b08c3e-2821-d88b-cae1-7785edcf5dca.png">
その場合は、VisualStudioで発行したWebアプリを実行していないためです。
実行した状態で http://localhost:87 にアクセスすると、Webアプリを表示することができます。
<img width="590" alt="VisualStudioで配置したWebアプリをIISサーバに公開する8.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/927dd325-734a-66f1-f07a-9439a2481e7d.png">

#他の端末から参照できる様にする
リダイレクトに設定したURLがlocalhostだと、IISサーバを構築した端末からしかアクセスできないため、
Visual StudioでWebアプリを実行したときのIPアドレスをlocalhostではなく、IISサーバのIPアドレスとしてリスナー登録します。

#####デバッグ実行するときの設定
「launchSettings.json」の"applicationUrl"に、IISサーバのIPアドレスと任意のポート番号を指定します。
<img width="742" alt="VisualStudioで配置したWebアプリをIISサーバに公開する9.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/44c2a16c-0050-90fb-840c-2c9e20f25ccc.png">

```C#:launchSettings.json
"applicationUrl": "https://192.168.**.*:5001;http://192.168.**.*:5000"
```
デバッグ実行した結果、設定したIPアドレスとポート番号が表示されれば成功です。
<img width="460" alt="VisualStudioで配置したWebアプリをIISサーバに公開する8.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/eaaae362-9162-6ba2-7b7c-ef87b2c9b296.png">

#####公開(発行)するときの設定
「launchSettings.json」は、デバッグ実行専用の設定ファイルですので、公開(発行)には含まれません。
「appsettings.Production.json」を新規に作成して「appsettings.json」配下に追加します。
<img width="939" alt="VisualStudioで配置したWebアプリをIISサーバに公開する10.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/67df1ed4-63cc-d767-5837-35ff35240035.png">
「appsettings.Production.json」には、IISサーバのIPアドレスと任意のポート番号を指定します。

```C#:appsettings.Production.json
{
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "https://192.168.**.*:5001"
      }
    }
  }
}
```
発行したWebアプリ(*.exe)を実行して、設定したIPアドレスとポート番号が表示されれば成功です。
<img width="514" alt="VisualStudioで配置したWebアプリをIISサーバに公開する11.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/d01f1260-233b-04d5-1784-288b7cdda92e.png">

#####リダイレクトを再設定する
Visual Studioで設定したIPアドレスとポート番号をリダイレクトに設定します。
<img width="702" alt="VisualStudioで配置したWebアプリをIISサーバに公開する13.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/ff52bc7a-5b54-0a26-dee8-afec5f62c136.png">

他の端末からIISサーバのサイトにアクセスします。
以下はローカルネットワーク(WiFi)で接続されたiPhoneからHTTPリダイレクトを設定したサイトにアクセスした時の画像です。
<img width="375" alt="2010 7.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/362635/55f34bab-b63f-8693-e093-69789665b522.png">