Help us understand the problem. What is going on with this article?

Visual Studio 2017 による ASP.NET Core MVC 開発

More than 1 year has passed since last update.

Visual Studio 2017 が、2017/03/07 に、リリースされて、約 1 カ月が経ちます。

その間に、すでに、4 回の更新がリリースされています。

Visual Studio 2017 リリース ノート
https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

この Visual Studio 2017 のリリースで良いところは、色々ありますが、特に良いなと思っているのが、"ASP.NET Core Web アプリケーション" が標準で開発できること。
この Visual Studio 2017 では、標準で "ASP.NET Core Web アプリケーション" のプロジェクト テンプレートが選択できます。

image

現状では、今までの .NET Framework のすべての API をサポートしているわけではないものの、Linux でも動作可能な ASP.NET Web アプリケーションを開発できるというのは、大きなメリットです。
積極的に "ASP.NET Core Web アプリケーション" を選択し、開発していきましょう!

image

プロジェクトの新規作成で、"ASP.NET Core Web アプリケーション(.NET Core)" を選択すると、 さらに、ASP.NET MVC のテンプレートが選択可能なダイアログが表示されます。
ネイティブ アプリのバックエンドとして、RESTful な Web サービスを開発する場合は、[Web API] を Web アプリケーションを開発する場合は、[Web アプリケーション] を選択ください。

image

[Web アプリケーション] を選択した場合、テンプレートが生成され、実行すると、今までの ASP.NET MVC のテンプレートと同様の Web アプリケーションが生成されていることが分かります。

image

ただ、クロスプラットフォーム対応のための変更点もいくつかあります。
"web.config" がありません。"appsettings.json" に置き換えられています。
XML ベースから、jSON ベースのフォーマットに変更されています。
また、IIS 固有の機能である URL リライトのルール設定等が、構成ファイルベースで定義できないことも注意点です。

image

この構成情報ですが、コード上でロードの処理が定義されています。

Startup.cs
public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }

上記のコードは、テンプレートで生成されたコードの Startup クラスの Startup メソッドですが、ここに構成情報のロードの処理が定義されています。

後に定義されている方の構成情報でオーバーライトされます。
以下の順の優先順位となります。

appsettings.json < appsettings.%ASPNETCORE_ENVIRONMENT%.json < 環境変数

環境変数で構成情報の設定を行う場合、":" をセパレーターにして環境変数の名前を定義します。

例) "Logging:IncludeScopes"

この環境変数の定義は、本番環境利用時、Azure App Services や Linux 環境での利用が考えられます。

.NET Core への移行は、IIS 固有の機能を利用している場合には、検討が必要となりますが、それ以外の場合では、いよいよ実用レベルに各機能が充実してきたと感じています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした