🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

6414閲覧

C# .NET Framework 4.7.2 ASP.NET MVC5をIISにデプロイする手順について

MeguroHarumi

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/01/26 23:39

編集2021/01/27 14:07

前提・実現したいこと

C# .NET Framework 4.7.2 ASP.NET MVC5 アプリケーションをWebサーバ上のIISにデプロイして、まずはWebサーバのローカルからアクセスしようとしています。以下の手順に沿って実施しており、1回目:403エラー⇒2回目:ディレクトリリストが表示という状態に進歩したものの、依然として表示したいView(Index.cshtml)が表示されていない状況です。

手順1.ASP.NET Webアプリケーションプロジェクトの作成
・プロジェクトを作成後、Controller(HomeController)とView(Index.cshtml)を作成
イメージ説明
・この結果「IIS Express」を使いURL「https://localhost:44320/Home/Index」でブラウザ表示に成功

手順2.Publish(公開)
・Targetは「フォルダー」を指定し、フォルダを指定して資産を生成
・場所はCドライブの一時フォルダ「C:\TempWeb」を指定
(すみません、画像はbin配下になっていますが、実際はC\TempApp直下を指定しています)
イメージ説明

手順3.IISに新規アプリケーションを追加
・物理パスは「C:\TempWeb\Home\View」を指定
・ホスト名は「localhost」を指定
イメージ説明

手順4.疎通確認
Webサイトの管理⇒参照で疎通チェック

発生している問題・エラーメッセージ

この手順でIndex.cshtmlのページが表示される事を期待していましたが、403エラーとなりました。
イメージ説明

該当のソースコード

Index.cshtml

1@{ 2 Layout = null; 3} 4 5<!DOCTYPE html> 6 7<html> 8<head> 9 <meta name="viewport" content="width=device-width" /> 10 <title></title> 11</head> 12<body> 13 <div> 14 HelloWorld!<br /> 15 </div> 16</body> 17</html>

試したこと

手順3で以下の設定を追加で実施しました。
・併せて既定ページに「C:\TempWeb\Home\View」配下の「Index.cshtml」を指定
・ディレクトリ参照を「有効」に設定

その結果、ディレクトリの一覧が表示されるようになりました。
イメージ説明

補足情報(FW/ツールのバージョンなど)

IIS:バージョン1607
Windows Server 2016
Visual Studio 2019

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/01/27 00:22 編集

Core ではないですよね? そのあたりは質問欄を編集して追記してください。 > ホスト名は「localhost」を指定 リモートの Web サーバー相手ですよね? なのになぜ localhost なのですか? 普通は名前解決できるホスト名かサーバーのコンピュータ名 (LAN 内にあってコンピューター名で名前解決できる場合) にすると思うのですが。そこがそもそも変です。 リモートのサーバーにデプロイする前に、自分の開発マシンのローカル IIS にデプロイしてみらたいかがですか? それでいろいろ分かりそうな気がしますので。
MeguroHarumi

2021/01/27 00:50

早速のアドバイス頂きありがとうございます。 すみません、質問が分かり辛いかったですね。 Webサーバ上で作業をしている事には間違いないのですが、まずはサーバ上のブラウザ(IE)からローカルで接続出来るか?を試そうとしていました。そのためにlocalhostを指定していました(この理解違ってたら、お手数ですがご指摘お願いします) その後、ご指摘の通りlocalhostを名前解決出来るホスト名等に変更&ファイアウォール等の設定を行い、外部からのアクセスを試そうと考えていました。 ですが、切り分けのために、アドバイス頂いた通り、クライアント端末上のIISでも試してみようと思います。
退会済みユーザー

退会済みユーザー

2021/01/27 01:35

> C#でASP.NET Webアプリケーション(Coreではない) 書くなら「 C# .NET Framework 4.8 ASP.NET MVC5 アプリケーション」というように書いてもらえませんか?(4.8, MVC5 のところは自分のものを調べて書いてください)
MeguroHarumi

2021/01/27 01:45

ご指摘ありがとうございます。修正いたしました。
退会済みユーザー

退会済みユーザー

2021/01/27 01:59

> まずはサーバ上のブラウザ(IE)からローカルで接続出来るか?を試そうとしていました。そのためにlocalhostを指定していました(この理解違ってたら、お手数ですがご指摘お願いします) %SystemDrive%\inetpub\wwwroot の Dafault Web Site とは別にその試験用のサイトを IIS に作っているのだと思いますが、であれば、何か適当な任意のホスト名を決めてそれをサーバーの hosts ファイル(DNS があれば今後リモートで接続するのにそちらの方が良いかも)に登録し、そのサイト名を指定してはいかがですか?
MeguroHarumi

2021/01/27 13:04 編集

SurferOnWww様 ご回答頂きありがとうございます。以下の2点を修正した結果、任意のホスト名でサーバ内のブラウザ(IE)から「http://[任意のホスト名]」で接続に成功しました。特に②はそもそもの設定不備があり、失礼いたしました。 ①hostsファイルにIP/ホスト名を登録(SurferOnWww様からのアドバイス) ②IISの不足機能のインストール(ASP.NET) 次はファイアウォール等の設定を行い、外部アクセスを試そうと思います。 ご助言頂きありがとうございました。
guest

回答1

0

自己解決

IISインストール時にASP.NETの機能をチェックし漏れた事が原因でした。
(この段階で、当初の質問内容であったlocalhostを指定しての接続が可能になりました)

加えて、SurferOnWww様にコメント頂いたhostsファイルの編集により、任意のホスト名での接続も可能となりました。

投稿2021/01/27 13:07

MeguroHarumi

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問