LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

ラベル .net core 2 の投稿を表示しています。 すべての投稿を表示
ラベル .net core 2 の投稿を表示しています。 すべての投稿を表示

2018年3月20日火曜日

【.Net Core 2.0】データベース接続文字列をappsettings.jsonに保存しプログラムから参照する方法



■データベース接続文字列をプログラムから参照できるように保存する。

○接続文字列の生成

Visual Studio 2017  ツール→データベースへの接続 から、ダイアログにしたがって、SQL Server を追加した。
すると、サーバーエクスプローラーに、追加したSQL Serverが表示される。
このプロパティーから接続文字列を拾い出した。(例)
Data Source=127.0.0.1\TESTinstance;Initial Catalog=testdb;Persist Security Info=True;User ID=sa;Password=abcdefg
(注意)
127.0.0.1\InstanceName で接続する場合、SQL Server browser を起動していなければならない。
初期状態では起動もしておらず、起動することもできない状態になっている。
コントロールパネル→管理ツール→サービス→SQL Server browser から、起動するように設定しておく。


○接続文字列情報の追加

appsettings.json の初期状態の内容を確認した。
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }

  }

}
次のように、接続文字列情報を追加した。
参照用の名前は、testDatabase とした。
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
"ConnectionStrings": {
    "testDatabase": "Data Source=127.0.0.1\TESTinstance;Initial Catalog=testdb;Persist Security Info=True;User ID=sa;Password=abcdefg;"
  }

}


■接続文字列を取得するコードを作成した。

○JSON形式の情報の読み取りに必要なパッケージの追加

NuGetで以下を追加した。

 Microsoft.Extensions.Configuration
 Microsoft.Extensions.Configuration.Json
 Microsoft.Extensions.Configuration.Binder


○取得までの流れ

IConfigurationRootのインスタンスを生成する。

このIConfigurationRootのインスタンスは、カレントディレクトリ内のappsettings.jsonを取り扱うメソッドを備えている。
たとえば、GetConnectionStringで、キーを指定して接続文字列を取得することができる。

IConfigurationRootのインスタンスは、ConfigurationBuilderインスタンス生成し設定したうえで、このBuildメソッドによって生成される。
このとき、appsettings.jsonへのパスは何らかの方法で指定しなければならない。


○appsettings.jsonへのパスを直接コードに埋め込む方法。
(実用的でない。これは動作テスト用である。)

IConfigurationRoot configuration = new ConfigurationBuilder()           .AddJsonFile(@"C:\Users\root\source\repos\WebApp_test01\WebApp_test01\appsettings.json", false)
 .Build();

string constr = configuration.GetConnectionString("testDatabase");


○appsettings.jsonへのパスを動的に取得する方法。

上の例では appsettings.json のパスが固定されているからいけない。
これを動的に指定したい。

また、共通して使えるIConfigurationRootのインスタンスは、プログラム起動時に一回だけ生成しておき、
後でいつでも参照できるようにしたい。

先ず、次のように、Programクラスに、staticメンバ(IConfigurationRoot configuration)を追加して、
Mainメソッド内でConfigurationBuilderによって生成したIConfigurationRootのインスタンスの参照を保存するようにする。
public class Program
    {
        public static IConfigurationRoot configuration;
        public static void Main(string[] args)
        {
         
            configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile(@"appsettings.json", false).Build();       
            BuildWebHost(args).Run();
        }
        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
<略>
次に、appsettings.jsonを参照するには、次のように、
さきのProgramクラスを指定しその静的メンバであるconfigurationを参照することで、
先ほどのIConfigurationRootのインスタンスがもつアクセス用メソッドを呼び出す。
    public class MyRepository
    {
        public SqlConnection con; //using System.Data.SqlClient;
        private void connection()
        {
            string constr = Program.configuration.GetConnectionString("testDatabase");

            con = new SqlConnection(constr);
        }
<略>

以上


NuGet
System.Data.Common
System.Data.SqlClient


ASP.NET MVCプログラミング入門 (マイクロソフト関連書)

新品価格
¥3,456から
(2018/5/21 15:43時点)


<参考>

・I cannot start SQL Server browser
< https://stackoverflow.com/questions/21375014/i-cannot-start-sql-server-browser > 2018年3月17日

▲json形式ファイルに保存された接続文字列情報

・Configure an ASP.NET Core App / JSON configuration
< https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?tabs=basicconfiguration > 2018年3月20日

・Connection Strings/ASP.NET Core
< https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings#aspnet-core > 2018年3月17日

・.NET Core のコンソ-ルアプリケーションで設定ファイルを利用する
< https://qiita.com/abpla/items/c4faeed42bef4d450c8d >2018年3月18日

・Using .NET Core Configuration with legacy projects
< http://benfoster.io/blog/net-core-configuration-legacy-projects > 2018年3月18日

2017年10月9日月曜日

【.NET Core 2.0】ブラウザからのアップロードファイルを受けて保存し、再びダウンロードさせるコード

ブラウザからファイルをアップロードし、サーバーにテンポラリファイルに保存後、
ファイル名を変えてダウンロードさせてブラウザに保存させる一連の流れを示すためのコード

実際に使用したソースコードから、一部抜粋、改変しているため、
そのままでは動作しないかもしれません。


■Viewの作成

<form method="post" enctype="multipart/form-data" asp-controller="Test" asp-action="Index">
            <input type="file" name="Targetfile" />
            <input type="submit" value="Upload" />
</form>


■アクションメソッドの作成
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using System.IO;
//GET時に使用されるアクションメソッド
public IActionResult Index()
        {
            return View();
        }
//ポスト時に使用されるアクションメソッド
[HttpPost]
public IActionResult Index(IFormFile Targetfile)
        {
            var filename = "Result-"+System.DateTime.Now.ToString("yyyyMMddHHmmss");
            //アップロードされたTargetfileをSaveAndGetFilePathで一時ファイルに保存し、それをGetStreamとFileを経てブラウザに返す。
            return File(GetStream(SaveAndGetFilePath(Targetfile)), "APPLICATION/octet-stream",filename);
        }

//IFormFile型のオブジェクトからファイルを抽出しファイルに保存し、ファイルパスを返すメソッド
private String SaveAndGetFilePath(IFormFile ff)
        {
            String filePath = Path.GetTempFileName();
            if (ff.Length > 0)
            {
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    ff.CopyTo(stream);
                }
                return filePath;
            }
            else
            {
                return null;
            }
        }

//ファイルパスからストリームを生成するメソッド
private Stream GetStream(String filepath)
        {
            var memory = new MemoryStream();
            using (var stream = new FileStream(filepath, FileMode.Open))
            {
                stream.CopyTo(memory);
            }
            memory.Position = 0;
            return memory;
        }


<Fileメソッド>
Microsoft.AspNetCore.Mvc.ControllerBase.File メソッド

○引数(オーバーロードが11もある。)
上記で使用しているものについて
・System.IO.Stream型
・コンテンツタイプを表す文字列
・ダウンロード時のファイル名を表す文字列

○返す値
Microsoft.AspNetCore.Mvc.FileStreamResult 型

クライアントにステータス200OKを返して、Stream型で指定された内容をファイルとしてダウンロードさせる。

新品価格
¥3,456から
(2018/5/21 15:43時点)

<参考>
・File uploads in ASP.NET Core
< https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads > 2017年10月9日

・Upload/Download Files in ASP.NET Core 2.0
< https://www.codeproject.com/Articles/1203408/Upload-Download-Files-in-ASP-NET-Core > 2017年10月9日

・Return file in ASP.Net Core Web API
< https://stackoverflow.com/questions/42460198/return-file-in-asp-net-core-web-api > 2017年10月9日

・How do I write out a text file in C# with a code page other than UTF-8?
< https://stackoverflow.com/questions/373365/how-do-i-write-out-a-text-file-in-c-sharp-with-a-code-page-other-than-utf-8 > 2017年10月14日



2017年9月3日日曜日

【.NET Core 2.0】CSVファイル(SHIFT-JIS)をCSVHelperで扱ってデータを汎用の型に格納するメソッドを作成する

<目次>
・既存のプロジェクトに CsvHelper を導入
・SHIFT-JISを利用できるように設定
・CSVファイルを読み込んで汎用の型にデータを格納するメソッドの作成


■準備

<CsvHelperの導入>

1、Visual Studio 2017 Communityで、既存のプロジェクトを開いた。
2、ツール → Nugetパッケージマネージャー → パッケージマネージャーコンソール を開いた。
3、下記のように、PM> プロンプトにコマンドを入力した。
各パッケージのライセンスは、パッケージの所有者からパッケージのユーザーに付与されます。NuGet は、サードパーティのパッケージに対して一切責任を負わず、いかなるライセンスも付与しません。パッケージに含まれている依存関係に対して追加のライセンスが適用されることがあります。依存関係を確認するには、パッケージ ソース (フィード) URL にアクセスしてください。
パッケージ マネージャー コンソール ホストのバージョン 4.4.0.4431
利用可能なすべての NuGet コマンドを参照するには、'get-help NuGet' を入力します。
PM> Install-Package CsvHelper
  GET https://api.nuget.org/v3/registration3-gz-semver2/csvhelper/index.json
  OK https://api.nuget.org/v3/registration3-gz-semver2/csvhelper/index.json 226 ミリ秒
C:\Users\myname\source\repos\testWebApplication1\testWebApplication1\testWebApplication1.csproj のパッケージを復元しています...
  GET https://api.nuget.org/v3-flatcontainer/csvhelper/index.json
  OK https://api.nuget.org/v3-flatcontainer/csvhelper/index.json 2189 ミリ秒
  GET https://api.nuget.org/v3-flatcontainer/csvhelper/2.16.3/csvhelper.2.16.3.nupkg
  OK https://api.nuget.org/v3-flatcontainer/csvhelper/2.16.3/csvhelper.2.16.3.nupkg 708 ミリ秒
CsvHelper 2.16.3.0 をインストールしています。
NuGet パッケージ CsvHelper 2.16.3 をインストールしています。
復元をコミットしています...
ロック ファイルをディスクに書き込んでいます。パス: C:\Users\myname\source\repos\testWebApplication1\testWebApplication1\obj\project.assets.json
C:\Users\myname\source\repos\testWebApplication1\testWebApplication1\testWebApplication1.csproj の復元が 9.62 sec で完了しました。
'CsvHelper 2.16.3' が testWebApplication1 に正常にインストールされました
NuGet の操作の実行に 7.7 sec かかりました
経過した時間: 00:00:19.9191645
PM>

4、下記のように、利用する .cs コードファイルに、ネームスペースを追加した。
using CsvHelper;

<SHIFT-JIS を利用できるようにした>

○必要なパッケージと設定を行わなければ、次のように、System.Text.Encoding.GetEncoding("shift_jis") で例外が発生した。
An unhandled exception occurred while processing the request.
ArgumentException: 'shift_jis' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
System.Globalization.EncodingTable.internalGetCodePageFromName(string name)
System.Globalization.EncodingTable.internalGetCodePageFromName(string name)
System.Globalization.EncodingTable.GetCodePageFromName(string name)
System.Text.Encoding.GetEncoding(string name)

○そこで、次のように、パッケージの導入と設定を行った。

まず、パッケージの導入を行った。冒頭のCSVHelperの導入と同様である。
PM> Install-Package System.Text.Encoding.CodePages
  GET https://api.nuget.org/v3/registration3-gz-semver2/system.text.encoding.codepages/index.json
  OK https://api.nuget.org/v3/registration3-gz-semver2/system.text.encoding.codepages/index.json 186 ミリ秒
C:\Users\myname\source\repos\testWebApplication1\testWebApplication1\testWebApplication1.csproj のパッケージを復元しています...
NuGet パッケージ System.Text.Encoding.CodePages 4.4.0 をインストールしています。
復元をコミットしています...
ロック ファイルをディスクに書き込んでいます。パス: C:\Users\myname\source\repos\testWebApplication1\testWebApplication1\obj\project.assets.json
C:\Users\myname\source\repos\testWebApplication1\testWebApplication1\testWebApplication1.csproj の復元が 7.74 sec で完了しました。
NuGet の操作の実行に 7.7 sec かかりました
経過した時間: 00:00:17.7995284
PM>
そして、次のコードを、追加した。
位置は、System.Text.Encoding.GetEncoding("shift_jis") が実行される手前にした。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
以下に、使用例としてメソッドを作成した。


■ CSVHelperの動作確認用メソッドの作成

CSVHelperはモデルマッピングなどの機能を有するが、
ここでは単純に、CSVファイルから、List<String[]> の形にデータを吸い出すようにした。

次のように、CSVファイルのパスを引数に与え、List<String[]> を返すメソッドを定義した。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using Microsoft.AspNetCore.Http;
using System.Text;
using CsvHelper; 
private List<String[]> ConvCSVToArrayOfString(string filePath)
        {
            List<String[]> rows = new List<String[]>();
            List<string> fields = new List<string>();
            string value;
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            using (TextReader fileReader = new StreamReader(filePath, System.Text.Encoding.GetEncoding("shift_jis")))
            {
                var csv = new CsvReader(fileReader);
                csv.Configuration.HasHeaderRecord = false;
                while (csv.Read())
                {
                    for (int i = 0; csv.TryGetField<string>(i, out value); i++)
                    {
                        //Adding a field to a collection
                        fields.Add(value);
                    }
                    //Adding this collection as String[] to a collection
                    rows.Add(fields.ToArray());
                    //Clear a list of fields
                    fields.Clear();
                } //Looping for a next row of CSV
            }
            return rows;
        }


新品価格
¥3,456から
(2018/5/21 15:43時点)

<参考>
(CSVHelperの導入と利用方法)
・CsvHelper
< http://joshclose.github.io/CsvHelper/ > 2017年9月1日

・C# で CSV を扱うのに CsvHelper を使う
< http://dany1468.hatenablog.com/entry/2013/07/15/175319 > 2017年9月1日


(CSVHelperの使用例)
・Read all values from CSV into a List using CsvHelper
< https://stackoverflow.com/questions/33294738/read-all-values-from-csv-into-a-list-using-csvhelper > 2017年9月1日

・Csvhelper - read / get a single column of all rows?
< https://stackoverflow.com/questions/18775745/csvhelper-read-get-a-single-column-of-all-rows > 2017年9月1日

・【C#】【CsvHelper】CsvHelperを利用したCsvファイルの生成
< http://kageura.hatenadiary.jp/entry/2015/05/18/200000 > 2017年9月1日

・CsvHelperとは
< http://notshown.hatenablog.jp/entry/2016/05/30/113815 > 2017年9月1日


(SHIFT-JISの導入について)
・Shift-JIS encoding for a netstandard library
< https://stackoverflow.com/questions/40331957/shift-jis-encoding-for-a-netstandard-library > 2017年9月1日

・System.Text.Encoding.CodePages 4.4.0
< https://www.nuget.org/packages/System.Text.Encoding.CodePages/ > 2017年9月1日

・EncodingProvider Class
< https://msdn.microsoft.com/en-us/library/system.text.encodingprovider(v=vs.110).aspx#Remarks > 2017年9月1日

・dotnet coreで対応しているテキストエンコーディング
< https://opcdiary.net/?p=31103 > 2017年9月1日

・.NET Core コンソールアプリで日本語出力する方法
< http://naughtldy.hatenablog.jp/entry/2017/05/01/080000 > 2017年9月1日

・.NET Core での コンソールアプリの文字化けを直す
< http://aquasoftware.net/blog/?p=895 > 2017年9月1日

・UWPでSJISを読みたい
< https://teratail.com/questions/56060 > 2017年9月1日


(StringReader)
・StreamReader vs TextReader
< https://forums.asp.net/t/1195587.aspx?StreamReader+vs+TextReader > 2017年9月1日

・文字コードを指定してテキストファイルを読み込む
< http://dobon.net/vb/dotnet/file/readfile.html > 2017年9月1日

・What is default encoding in .Net? #260
< https://github.com/dotnet/standard/issues/260 > 2017年9月1日


(CSVファイルをライブラリなしで扱う)
・Reading and Writing CSV Files in C#
< http://www.blackbeltcoder.com/Articles/files/reading-and-writing-csv-files-in-c > 2017年9月1日


(パッケージマネージャー)
・Package Manager Console
< https://docs.microsoft.com/ja-jp/nuget/tools/package-manager-console > 2017年9月1日

2017年8月31日木曜日

【Windows 8.1 64bit】.NET Core 2.0 SDKと、Visual Studio 2017 Communityをセットアップし、MVC WEBアプリの作成と動作ができるようにした【.NET Core 2.0】【VS 2017 Community】

Windows 8.1 に、「.NET Core 2.0 SDK」と、「Visual Studio 2017 Community」 を導入し、
MVC方式のWEBアプリ(.NET Core 2.0)を作成、動作させられるようにした。

次の方法で、できた。



■最初に、Windowsのアップデートを行った。


■.NET Core 2.0 SDK のインストールを行った。

(注意)プラットフォームに応じたインストーラーを選択すること。

私の場合、下記リンクから、SDKを選択して、「Windows (x64) Installer」をダウンロードした。
(このとき、dotnet-sdk-2.0.0-win-x64.exe が得られた。)

https://www.microsoft.com/net/download/core

ダウンロードしたexeファイルを実行し、ダイアログに従い、導入を完了させた。


■Visual Studio 2017 Community のインストールを行った。

下記リンクから、「Visual Studio Community 2017」を選択し、ダウンロードした。
(このとき、vs_community__638787920.1504115583.exe が得られた。)

https://www.visualstudio.com/ja/downloads/

ダウンロードしたexeファイルを実行し、ダイアログに従い、以下を留意して導入を完了させた。


○バージョンの選択を行った。
Visual Studio Community 2017 Preview を選択した。

○そして、次の項目を指定した。(重要)
・ASP.NET と Web 開発
・Visual Studio 拡張機能の開発
・.NET Core クロスプラットフォームの開発

これらを指定しない場合、WEBアプリの動作時にエラーが多数発生した。


(注意)
ネットワーク経由でのインストールになるので、時間をそれなりに要した。

以上

ASP.NET MVCプログラミング入門 (マイクロソフト関連書)

新品価格
¥3,456から
(2018/5/21 15:43時点)



<参考>
・Hello World From .NET Core 2 And VS 2017 Preview And Difference In csproj
< http://www.c-sharpcorner.com/article/hello-world-from-net-core-2-and-vs-2017-preview-and-difference-in-csproj/ > 2017年8月31日

【Linux CentOS 7】VS2017で作成したサンプル.NET Core 2.0 MVC WEBアプリをLinuxでそのまま実行させる【.NET Core 2.0】

(更新 2019/1/26)外部から80番ポートに接続する設定



Windows上のVisual Studio 2017 Community で作成した「MVC WEBアプリ(.net core 2.0)」は、
.NET Core 2.0 SDK導入済みのLinuxマシン上に、プログラムデータフォルダごと持って来て、
dotnet runコマンドを実行するだけで、そのまま動作させることができた。



■(準備).NET Core 2.0 などのセットアップ方法について

Windowsマシンへの「.NET Core 2.0 SDK」、「VS 2017 Community」 の導入は次のようにして行った。
http://akira-arets.blogspot.jp/2017/08/windows81-install-dotnetcore2sdk-vs2017.html

Linuxマシンへの.NET Core 2.0 SDK 導入は次のようにして行った。
http://akira-arets.blogspot.jp/2017/08/linux-centos7-netcore2-helloworld.html



■まず、Windows上Visual Studio 2017 Communityで、サンプルMVC WEBアプリを作成した。

Windows上のVS 2017 communityで、WEBアプリ(.net core 2.0)テンプレートから、
テスト用WEBアプリを作成し、保存した。
ところで、これは、MVC WEBアプリ版のHello Worldのようなものである。
これをベースにして自分で、コントローラー、アクション、ビューを追加していけた。

デフォルトで、以下の場所に保存された。
C:\Users\myname\source\repos\testWebApplication1\

このフォルダにある、同名「testWebApplication1」を、zipで圧縮し、適当な方法で、
.NET Core 2.0 SDKを導入済みのLinuxマシンにコピーし解凍した。



<以下は、このLinuxマシン(.NET Core 2.0 SDK導入済み)での操作である。>

■次に、VS 2017 Communityで作成したテスト用WEBアプリをLinux上で実行した。

$ cd testWebApplication1
$ ls
Controllers  Program.cs  Startup.cs  appsettings.Development.json  bin         bundleconfig.json  testWebApplication1.csproj       wwwroot
Models       Properties  Views       appsettings.json              bower.json  obj                testWebApplication1.csproj.user

テスト用WEBアプリを実行した。
(もしここでroot権限で動作させた場合、このアプリでは次回以降もroot権限が必要になった。)
$ dotnet run
/home/myname/testWebApplication1/testWebApplication1/Properties/launchSettings.json からの起動設定を使用中...
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]
      Creating key {b2f7073b-fd26-478d-8895-6e7484676238} with creation date 2017-08-30 16:53:28Z, activation date 2017-08-30 16:53:28Z, and expiration date 2017-11-28 16:53:28Z.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {b2f7073b-fd26-478d-8895-6e7484676238} may be persisted to storage in unencrypted form.
info: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[39]
      Writing data to file '/root/.aspnet/DataProtection-Keys/key-b2f7073b-fd26-478d-8895-6e7484676238.xml'.
Hosting environment: Development
Content root path: /home/myname/testWebApplication1/testWebApplication1
Now listening on: http://localhost:49293Application started. Press Ctrl+C to shut down.

○動作確認○
ここで、ローカルのブラウザから、上記に指定されたアドレスにアクセスした。
すると、MVCや、BootStrap を活用したサンプルページが表示された。


info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
      Executing action method testWebApplication1.Controllers.HomeController.Index (testWebApplication1) with arguments ((null)) - ModelState is Valid
info: Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ViewResultExecutor[1]
      Executing ViewResult, running view at path /Views/Home/Index.cshtml.
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
      Executed action testWebApplication1.Controllers.HomeController.Index (testWebApplication1) in 5734.6912ms
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 5997.6831ms 200 text/html; charset=utf-8
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/lib/bootstrap/dist/css/bootstrap.css
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/css/site.css
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/css/site.css'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/css/site.css'
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/lib/bootstrap/dist/css/bootstrap.css'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/lib/bootstrap/dist/css/bootstrap.css'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 42.4335ms 200 text/css
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/lib/jquery/dist/jquery.js
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/lib/jquery/dist/jquery.js'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/lib/jquery/dist/jquery.js'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 80.2129ms 200 text/css
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 28.1376ms 200 application/javascript
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/lib/bootstrap/dist/js/bootstrap.js
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/lib/bootstrap/dist/js/bootstrap.js'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/lib/bootstrap/dist/js/bootstrap.js'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 5.6164ms 200 application/javascript
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/js/site.js?v=7mkNbU1tgQL1bUeZe3j2R151hKLhLDKO4BBaR-iqCy0
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/images/banner1.svg
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/js/site.js'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/js/site.js'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 9.1577ms 200 application/javascript
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/images/banner2.svg
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/images/banner2.svg'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/images/banner2.svg'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 2.9037ms 200 image/svg+xml
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/images/banner3.svg
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/images/banner3.svg'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/images/banner3.svg'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 8.067ms 200 image/svg+xml
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/images/banner4.svg
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/images/banner4.svg'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/images/banner4.svg'
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/images/banner1.svg'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/images/banner1.svg'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 29.3217ms 200 image/svg+xml
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 6.9818ms 200 image/svg+xml
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 0.7479ms 200 font/woff2
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 GET http://localhost:49293/favicon.ico
info: Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware[2]
      Sending file. Request path: '/favicon.ico'. Physical path: '/home/myname/testWebApplication1/testWebApplication1/wwwroot/favicon.ico'
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 0.7905ms 200 image/x-icon

○「CTRL+C」を押して、WEBアプリを終了した○
^CApplication is shutting down...


■httpサーバのポートを80にし、外部のマシンからの接続を受け付ける方法

動作中の dotnet run コマンドは、CTRL+C で止めておく。
プロジェクト内の次のファイルに下記のように1行追加して、
dotnet run コマンドで起動しなおす。

# cat Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace test
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }
        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseUrls(urls: "http://0.0.0.0:80")
                .Build();
    }
}



以上


新品価格
¥3,456から
(2018/5/21 15:43時点)


<参考>
・Setting ASP.NET host address in .NET Core 2
< https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2 > 2019年1月26日

・ASP.NET CoreのWebApplicationを外部公開
< https://qiita.com/husky774rr/items/256609e9d126653274f0 > 2019年1月26日

【Linux CentOS 7】.NET Core 2.0 SDK をインストールしてHelloWorldを表示するコンソールプログラムを実行した【.NET Core 2.0】

CentOS 7 64bitに、.NET Core 2.0 SDK を導入し、サンプルプログラムを実行した。
「参考」のリンクにあるページ通りに作業を行った。


■システムの更新

# yum update
# uname -a
Linux localhost.localdomain 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux


■専用リポジトリを利用するための設定

# rpm --import https://packages.microsoft.com/keys/microsoft.asc

○repoファイルの生成
# sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

# cat /etc/yum.repos.d/dotnetdev.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc


■パッケージの導入(1)

# yum install libunwind libicu -y
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * ius: mirrors.tuna.tsinghua.edu.cn
 * nux-dextop: li.nux.ro
 * updates: ftp.tsukuba.wide.ad.jp
パッケージ libicu-50.1.2-15.el7.x86_64 はインストール済みか最新バージョンです
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ libunwind.x86_64 2:1.1-5.el7_2.2 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
========================================================================================================================================================================
 Package                                 アーキテクチャー                     バージョン                                       リポジトリー                        容量
========================================================================================================================================================================
インストール中:
 libunwind                               x86_64                               2:1.1-5.el7_2.2                                  base                                56 k
トランザクションの要約
========================================================================================================================================================================
インストール  1 パッケージ
総ダウンロード容量: 56 k
インストール容量: 146 k
Downloading packages:
libunwind-1.1-5.el7_2.2.x86_64.rpm                                                                                                               |  56 kB  00:00:00  
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 2:libunwind-1.1-5.el7_2.2.x86_64                                                                                                        1/1
  検証中                  : 2:libunwind-1.1-5.el7_2.2.x86_64                                                                                                        1/1
インストール:
  libunwind.x86_64 2:1.1-5.el7_2.2                                                                                                                                    
完了しました!


■パッケージの導入(2)

yum install dotnet-sdk-2.0.0
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * ius: mirrors.tuna.tsinghua.edu.cn
 * nux-dextop: li.nux.ro
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ dotnet-sdk-2.0.0.x86_64 0:2.0.0-1 を インストール
--> 依存性の処理をしています: dotnet-runtime-2.0.0 >= 2.0.0 のパッケージ: dotnet-sdk-2.0.0-2.0.0-1.x86_64
--> 依存性の処理をしています: aspnetcore-store-2.0.0 >= 2.0.0 のパッケージ: dotnet-sdk-2.0.0-2.0.0-1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ aspnetcore-store-2.0.0.x86_64 0:2.0.0-1 を インストール
---> パッケージ dotnet-runtime-2.0.0.x86_64 0:2.0.0-1 を インストール
--> 依存性の処理をしています: dotnet-hostfxr-2.0.0 のパッケージ: dotnet-runtime-2.0.0-2.0.0-1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ dotnet-hostfxr-2.0.0.x86_64 0:2.0.0-1 を インストール
--> 依存性の処理をしています: dotnet-host >= 2.0.0 のパッケージ: dotnet-hostfxr-2.0.0-2.0.0-1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ dotnet-host.x86_64 0:2.0.0-1 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
========================================================================================================================================================================
 Package                                       アーキテクチャー              バージョン                        リポジトリー                                        容量
========================================================================================================================================================================
インストール中:
 dotnet-sdk-2.0.0                              x86_64                        2.0.0-1                           packages-microsoft-com-prod                         85 M
依存性関連でのインストールをします:
 aspnetcore-store-2.0.0                        x86_64                        2.0.0-1                           packages-microsoft-com-prod                         24 M
 dotnet-host                                   x86_64                        2.0.0-1                           packages-microsoft-com-prod                         42 k
 dotnet-hostfxr-2.0.0                          x86_64                        2.0.0-1                           packages-microsoft-com-prod                        181 k
 dotnet-runtime-2.0.0                          x86_64                        2.0.0-1                           packages-microsoft-com-prod                         24 M
トランザクションの要約
========================================================================================================================================================================
インストール  1 パッケージ (+4 個の依存関係のパッケージ)
総ダウンロード容量: 133 M
インストール容量: 133 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): dotnet-host-2.0.0-rhel.7-x64.rpm                                                                                                          |  42 kB  00:00:00  
(2/5): dotnet-hostfxr-2.0.0-rhel.7-x64.rpm                                                                                                       | 181 kB  00:00:00  
(3/5): aspnetcore-store-2.0.0-rhel.7-x64.rpm                                                                                                     |  24 MB  00:00:38  
(4/5): dotnet-runtime-2.0.0-rhel.7-x64.rpm                                                                                                       |  24 MB  00:00:46  
(5/5): dotnet-sdk-2.0.0-rhel-x64.rpm                                                                                                             |  85 MB  00:01:45  
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                    949 kB/s | 133 MB  00:02:24  
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : aspnetcore-store-2.0.0-2.0.0-1.x86_64                                                                                                   1/5
  インストール中          : dotnet-host-2.0.0-1.x86_64                                                                                                              2/5
Creating dotnet host symbolic link: /usr/bin/dotnet
  インストール中          : dotnet-hostfxr-2.0.0-2.0.0-1.x86_64                                                                                                     3/5
  インストール中          : dotnet-runtime-2.0.0-2.0.0-1.x86_64                                                                                                     4/5
  インストール中          : dotnet-sdk-2.0.0-2.0.0-1.x86_64                                                                                                         5/5
This software may collect information about you and your use of the software, and send that to Microsoft.
Please visit http://aka.ms/dotnet-cli-eula for more information.
Welcome to .NET Core!
---------------------
Learn more about .NET Core @ https://aka.ms/dotnet-docs. Use dotnet --help to see available commands or go to https://aka.ms/dotnet-cli-docs.
.NET Core Tools Telemetry
--------------
The .NET Core Tools include a telemetry feature that collects usage information. It is important that the .NET Team understands how the tools are being used so that we can improve them.
The data collected is anonymous and will be published in an aggregated form for use by both Microsoft and community engineers under the Creative Commons Attribution License.
The .NET Core Tools telemetry feature is enabled by default. You can opt-out of the telemetry feature by setting an environment variable DOTNET_CLI_TELEMETRY_OPTOUT (for example, 'export' on macOS/Linux, 'set' on Windows) to true (for example, 'true', 1). You can read more about .NET Core tools telemetry at https://aka.ms/dotnet-cli-telemetry.
Installation Note
--------------
A command will be run during the install process that will improve project restore speed and enable offline access. It will take up to a minute to complete.
  検証中                  : dotnet-host-2.0.0-1.x86_64                                                                                                              1/5
  検証中                  : dotnet-sdk-2.0.0-2.0.0-1.x86_64                                                                                                         2/5
  検証中                  : dotnet-hostfxr-2.0.0-2.0.0-1.x86_64                                                                                                     3/5
  検証中                  : aspnetcore-store-2.0.0-2.0.0-1.x86_64                                                                                                   4/5
  検証中                  : dotnet-runtime-2.0.0-2.0.0-1.x86_64                                                                                                     5/5
インストール:
  dotnet-sdk-2.0.0.x86_64 0:2.0.0-1                                                                                                                                  
依存性関連をインストールしました:
  aspnetcore-store-2.0.0.x86_64 0:2.0.0-1      dotnet-host.x86_64 0:2.0.0-1      dotnet-hostfxr-2.0.0.x86_64 0:2.0.0-1      dotnet-runtime-2.0.0.x86_64 0:2.0.0-1  
完了しました!


■テストコンソールアプリケーションの生成と実行

# dotnet new console -o hwapp
.NET Core へようこそ!
---------------------
.NET Core について詳しくは、https://aka.ms/dotnet-docs をご覧ください。dotnet --help を使って使用可能なコマンドを確認するか、https://aka.ms/dotnet-cli-docs をご覧ください。
テレメトリ
--------------
.NET Core ツールは、操作性を向上させるために利用状況データを収集します。データは匿名で、コマンドライン引数が含まれません。データは Microsoft によって収集され、コミュニティと共有されます。
テレメトリを無効にするには、お好きなシェルを使用して、DOTNET_CLI_TELEMETRY_OPTOUT 環境変数を 1 に設定します。
.NET Core ツールのテレメトリについて詳しくは、https://aka.ms/dotnet-cli-telemetry をお読みください。
準備しています...
テンプレート "Console Application" が正常に作成されました。
作成後のアクションを処理しています...
'dotnet restore' を hwapp/hwapp.csproj で実行しています...
  Restoring packages for /home/myname/hwapp/hwapp.csproj...
  Generating MSBuild file /home/myname/hwapp/obj/hwapp.csproj.nuget.g.props.
  Generating MSBuild file /home/myname/hwapp/obj/hwapp.csproj.nuget.g.targets.
  Restore completed in 426.36 ms for /home/myname/hwapp/hwapp.csproj.

正常に復元されました。
# cd hwapp
# ls
Program.cs  hwapp.csproj  obj

以下のように、デフォルトで”Hello World”を表示するコードが書かれていた。
# cat Program.cs
using System;
namespace hwapp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
# cd obj/
# ls
hwapp.csproj.nuget.cache  hwapp.csproj.nuget.g.props  hwapp.csproj.nuget.g.targets  project.assets.json
# cd ..
# pwd
/home/myname/hwapp

プログラムを実行した。(起動するまでに10秒程度要した。)
# dotnet run
Hello World!


以上

ASP.NET MVCプログラミング入門 (マイクロソフト関連書)

新品価格
¥3,456から
(2018/5/21 15:43時点)



<参考>
・Install .NET and build your first app on CentOS or Oracle Linux
< https://www.microsoft.com/net/core#linuxcentos > 2017年8月30日

Ad

Ad