tags

.NET Core で コードファーストでデータベースを作成する

● .NET Core Entity Framework コードファーストの手順

.NET Coreでコードファーストを使ってDBを作成するまでは大きく分けて次の手順となります。

・1. csファイルの作成と編集
    - モデルクラスの作成
    - DBコンテキストの作成
    - Startup.cs の ConfigureServices() メソッド内に コンテキスト読込を追加
・2. マイグレーションファイルの生成( dotnet ef migrations add )
・3. マイグレーションの実行( dotnet ef database update )

dotnet コマンドは PowerShell から実行します。(Visual Studioのコンソールではありません。)

● ・1. csファイルの作成と編集

Models/Memo.cs を以下のように作成

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace 【アプリ名】.Models
{
    public class Memo
    {
        public int ID { get; set; }
        public string Title { get; set; }
    }
}

IDを表すカラム名は必ず大文字で「ID」である必要があります。

Data/MyContext.cs を以下の内容で作成

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using 【アプリ名】.Models;

namespace 【アプリ名】.Data
{
    public class MyContext : DbContext
    {
        public MyContext( DbContextOptions options ) : base( options )
        {

        }
        public DbSet<Memo> Memo { get; set; }
    }
}

Startup.cs に以下の行を追加

        public void ConfigureServices(IServiceCollection services)
        {
            // コンテキストクラスを追加ここから
            services.AddDbContext<MyContext>( options => options.UseSqlServer(
                 Configuration.GetConnectionString( "DefaultConnection" )
             ) );
            // コンテキストクラスを追加ここまで

(options.UseSqlServer)は MS SQL Server を使うときに記述します。
(データベースの種類によって書き換えること)

● 2. データベーステーブルのマイグレーションの作成

dotnet ef migrations add ver1.0

● 2. (コンテキストを指定した)データベーステーブルのマイグレーションの作成

複数コンテキストがある場合はコンテキストを指定する必要があります。

dotnet ef migrations add __My__Ver1.2__  --context MyContex

このとき Migrations ディレクトリ内に次のようなファイルが生成されます。

20180704061421___My__Ver1.2__.cs
20180704061421___My__Ver1.2__.Designer.cs
dotnet ef migrations add __ApplicationDb__Ver1.2__  --context ApplicationDbContext

● 3. データベーステーブルのマイグレーションの実行

dotnet ef database update

● 3. (コンテキストを指定した)データベーステーブルのマイグレーションの実行

dotnet ef database update --context MyContext

● データベースの削除

データベース全体を Drop します

dotnet ef database drop

● データベースの削除(削除確認なし)

dotnet ef database drop -f

● データベースの削除( ApplicationDbContext を使って削除 )

複数コンテキストがある場合はコンテキストを指定する必要があります。 (ただしDB全体がdropされるので注意)

dotnet ef database drop --context ApplicationDbContext -f
No.1266
07/04 15:50

edit

.NET Core MVCアプリケーションをCentOS7にデプロイする

● VagrantでCentos/7 をインストールする

vagrant init centos/7
vagrant up
vagrant ssh

● .NET SDK のインストール

Centos7の仮想マシンにssh接続したらインストールをしていきます

su -
yum update  -y
yum install -y libunwind libicu lsof
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

● .NET SDK のインストール

・.NET SDK パッケージの確認

yum list | grep dotnet

インストールする dotnet のバージョンを確認します

・.NET SDK のインストール

 yum  install -y dotnet-sdk-2.1.4.x86_64 

上記コマンドのリストの中からインストールするパッケージを指定します

● dotnet コマンドの確認

dotnet --version

このようなに dotnetのバージョンが帰ってくればOK (例)

2.1.4

● HelloWorld .NET Core コンソールアプリの実行

dotnet new console -o myApp
cd myApp
dotnet run

これで

Hello World!

が表示されればOKです。

● HelloWorld .NET Core MVC アプリの作成と実行

dotnet new mvc -o testApp
cd testApp
dotnet publish -o ./published -r linux-x64
dotnet published/testApp.dll

(これで内蔵サーバが立ちあがります)

Content root path: /home/vagrant/dotnet/testApp
Now listening on: http://localhost:5000

curl で接続を確認する

curl http://localhost:5000

● 手っ取り早く 5000番ポートを空けるためfirewalld を オフにする

確認できたら firewalld を適切に設定してください。

systemctl stop firewalld

● 5000ポートの空きを確認する

lsof -i:5000

● 別のマシンから Vagrant マシンの5000版ポートを開いてみる

Google Chromeなどのブラウザから

192.168.33.10:5000

を開きます。

● nginxのインストール

vi /etc/yum.repos.d/nginx.repo

こちらの内容を保存する

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

nginxのインストール

yum install -y nginx
systemctl enable nginx
systemctl start nginx
nginx -v

● 別のマシンから nginxの起動を確かめる

Google Chromeなどのブラウザから

192.168.33.10

を開きます。nginxの画面が出ればOK

● kestrel リバースプロキシを設定する

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup
vi /etc/nginx/conf.d/default.conf
   location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

 ↓ このように書き換えます

   location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

nginxの再起動

sudo nginx -s reload

● SELinuxをオフにする( nginxのエラーログで Permission Denied になる場合)

sudo cat /var/log/audit/audit.log | grep nginx | grep denied
setsebool httpd_can_network_connect on -P

https://stackoverflow.com/questions/23948527/13-permission-denied-while-connecting-to-upstreamnginx

● 再度ブラウザからアクセスしてテストする

Google Chromeなどのブラウザから

192.168.33.10

を開きます。.NET Core MVC アプリケーションの画面が出ればOKです。

● CentOs用に パブリッシュして、実行ファイルを vagrantサーバにアップする

dotnet publish -o ./published -r centos.7-x64

あとは published フォルダを vagrant のサーバにアップして

dotnet ./published/アプリ名.dll

で起動します。

No.1264
07/03 17:15

edit

.NET Core 組込サーバ Kestrel で localhost 以外からのアクセスを受けれるようにする

Programs.cs

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
  ↓
        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()

               // 追加ここから
               .UseKestrel(options =>
                  {
                    options.Listen(System.Net.IPAddress.Any, 5000);
                  })
               // 追加ここまで

                .Build();
    }
No.1262
07/03 11:11

edit

.Net Core アプリを 自己完結型(SCD)で展開 する

● Visual Studio から .Net Core アプリを 「自己完結型の展開」で展開する

・「ソリューションエクスプローラー」からプロジェクトを右クリックして「エクスプローラーでフォルダーを開く」
・「 project名.csproj」ファイルをエディタで開く
・次のように修正する

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
   <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
  </PropertyGroup>

この状態で発行すると自己完結型で発行されます。

この時の「win10-x64」は以下の RIDカタログ を参考にしてください。

● .NET Core の RID カタログ

https://docs.microsoft.com/ja-jp/dotnet/core/rid-catalog

● 自己完結型の展開 (SCD)

https://docs.microsoft.com/ja-jp/dotnet/core/deploying/#self-contained-deployments-scd

No.1260
07/03 10:35

edit

IISでクロスオリジンAjaxを許可する Web.config

● WindowsのIIS WEBサーバでクロスオリジンAjaxを許可する Web.config

Web.config

<configuration> 
  <system.webServer> 
    <httpProtocol> 
      <customHeaders> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
      </customHeaders> 
    </httpProtocol> 
  </system.webServer> 
</configuration>

● Apache で クロスオリジンAjaxを許可する .htaccess

ちなみに Apache だと .htaccess で次のように記述します。 .htaccess の場合

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin: "*"
</IfModule>
No.1259
07/02 09:52

edit

ASP .NETアプリ の「発行」時に ApplicationConfig.xml を発行させないようにする

ASP .NETアプリ の「発行」時に ApplicationConfig.xml を発行させないようにするには

<プロジェクトフォルダ>/Properties/PublishProfiles/Profile.pubxmlに以下を追加します

  <PropertyGroup>

の下に次の項目を追加します。

    <ExcludeFilesFromDeployment>ApplicationConfig.xml</ExcludeFilesFromDeployment>
No.1257
06/25 21:44

edit

Mac版 SQL Server Management Studio (みたいなもの)SQL Operations Studio

.NET Coreが Linuxや Macに対応したのに合わせてデータベースツールも LinuxやMac対応できるツールが新しく Microsoftから出ています

● SQL Operations Studio

https://github.com/Microsoft/sqlopsstudio

Mac, Linux Windows対応です。

No.1253
06/19 10:33

edit

IIS で 特定のファイルを表示しないようにする

apacheでいう .htaccess にあたるのが IIS の Web.config です。
このファイルに次のように記述します。

例) test.txt を非表示にする
Web.config

<configuration>
      <system.webServer>
            <security>
            <requestFiltering>
            <denyUrlSequences>
                <add sequence="test" />
            </denyUrlSequences>
            <fileExtensions>
                <add fileExtension=".txt" allowed="false" />
            </fileExtensions>
            </requestFiltering>
            </security>
      </system.webServer>
<configuration>
No.1252
06/18 14:10

edit

ASP .NET MVC で XSS対策を一時的にオフにする

.NET WEBアプリでは XSS対策として HTMLタグらしきものを送信するとエラーとなります。 エラーになると次のようなエラーが表示されます

アプリケーションでサーバー エラーが発生しました。

● ASP .NET MVC で XSS対策を一時的にオフにする

YourController.cs

[ValidateInput( false )]

を加えます。 例 )

[ValidateInput( false )]
public ActionResult Index( Entry model )
{
    .....
}
No.1248
06/14 15:50

edit

ASP .NET Razorでカスタムエラーページを設定する

Web.config

<system.web>
    <customErrors defaultRedirect="~/Error/DefaultError.cshtml" mode="RemoteOnly">
      <error statusCode="404" redirect="~/Error/NotFound" />
    </customErrors>
mode="RemoteOnly"

にするとリモートでのみカスタムエラー画面が表示されます。

ローカルとリモート両方でカスタムエラー画面を表示させるには

mode="On"

とします。

No.1247
06/14 15:16

edit

ASP .NET RazorでWEBサイトのベースURLと物理パスを取得する

● ASP .NET RazorでWEBサイトのベースURLを取得する

引用 : https://www.wareko.jp/blog/post-21910

your-view-file.cshtml

@{
 var baseUrl = ""
            + Request.Url.Scheme + "://" 
            + Request.Url.Authority 
            + Request.ApplicationPath.TrimEnd('/'); 
}
@baseUrl/controller/method

http://localhost:49983/controller/method

と表示されます。

コントローラーから ViewData で渡す場合は
YourController.cs

string BASE_URL = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd( '/' );
ViewData["BASE_URL"] = BASE_URL;

your-view-file.cshtml

@ViewData["BASE_URL"]/controller/method

で渡します。

● .NET MVC で物理パスを取得するには Request を使用します。

Razorテンプレート内では @Request.ApplicationPath のように直接記述することができます。

<table>
    <tr><td>Request.ApplicationPath</td><td>@Request.ApplicationPath</td></tr>
    <tr><td>Request.FilePath</td><td>@Request.FilePath</td></tr>
    <tr><td>Request.Path</td><td>@Request.Path</td></tr>
    <tr><td>Request.FilePath</td><td>@Request.FilePath</td></tr>
    <tr><td>Request.PathInfo</td><td>@Request.PathInfo</td></tr>
    <tr><td>Request.PhysicalApplicationPath</td><td>@Request.PhysicalApplicationPath</td></tr>
    <tr><td>Request.PhysicalPath</td><td>@Request.PhysicalPath</td></tr>
    <tr><td>Request.RawUrl</td><td>@Request.RawUrl</td></tr>
    <tr><td>Request.Url</td><td>@Request.Url</td></tr>
</table>

例えば

http://localhost:49983/Debug/Url 

へのアクセスは

Request.ApplicationPath/
Request.FilePath/Debug/Url
Request.Path/Debug/Url
Request.FilePath/Debug/Url
Request.PathInfo
Request.PhysicalApplicationPathC:\my_dir\MY-PROJECT\PROJECT\
Request.PhysicalPathC:\my_dir\MY-PROJECT\PROJECT\Debug\Url
Request.RawUrl/Debug/Url
Request.Urlhttp://localhost:49983/Debug/Url

のような表示になります。

No.1246
06/14 15:00

edit

ASP .NET RazorのHTMLヘルパーの使い方と自作ヘルパーの作り方

● ASP .NET RazorのHTMLヘルパーの使い方

HTMLヘルパーはビュー( .cshtml )にて @Html.メソッド名 にて使用します。
例(HTMLエスケープを行わずそのまま出力する Raw() を呼び出す)

ViewData["message"] = "改行<br>します";
@Html.Raw( ViewData["message"] )

表示結果

改行
します

● ASP .NET Razorの主なHTMLヘルパー

こちらを参考に
http://blog.shibayan.jp/entry/20110327/1301152413

● 自作ヘルパーを作成する

例) 改行を<BR>タグに変換する自作ヘルパーを作成します。
【プロジェクト名】/Helpers/Myhelper.cs

using System;
using System.Web;
using System.Web.Mvc;

namespace 【プロジェクト名】.Helpers
{
    public static class Myhelper
    {
        public static MvcHtmlString newline2br( this HtmlHelper helper, string arg )
        {
            return MvcHtmlString.Create( arg.Replace( "\r\n", "\n" ).Replace( "\r", "\n" ).Replace( "\n", "<br>" ) );
        }
    }
}

テンプレートには以下のように記述します
mytemplate.cshtml

@using EVAA.Helpers

@Html.newline2br( "テスト\n文字列" )
No.1244
06/13 14:13

edit

.NET MVC ページで 独自の404ページを設置する

.NET MVC ページで 独自の404ページを設置する

● 1. Web.config に設定を記述

Web.config の「system.web」の下に 404 エラー時に /Error/NotFound へ移動するよう設定します
Web.config

  <system.web>

    <!--独自の404ページ-->
    <customErrors defaultRedirect="~/Error/" mode="On">
      <error statusCode="404" redirect="~/Error/NotFound"/>
    </customErrors>
    <!--独自の404ページ-->

● 2. コントローラー 「ErrorController 」を作成

ネームスペースの「MYAPP」のところは適宜書き換えてください。 NotFound のビューを返すようにしてあります

/Controllers/ErrorController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MYAPP.Controllers
{
    public class ErrorController : Controller
    {
        // GET: Error
        public ActionResult Index()
        {
            return View();
        }
        // GET: Error/NotFound
        public ActionResult NotFound()
        {
            ViewBag.Title = "Error 404";
            return View( "NotFound" );
        }
    }
}

● 3. ビュー 「NotFound」を作成

お好きなhtmlを作成してください。
/Views/Error/NotFound.cshtml

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>404 Not Found.</h1>
</body>
</html>
No.1243
06/05 16:34

edit

.NET Core で セッションを使用する

● セッションに値をセットする

Session["キー"] = 値;
Session["login_name"] = "HogeHoge";

● セッションの値を取得する

Session["キー"]
Object nameObj = Session["login_name"];
string firstName = (string)(Session["First"]);

文字列でほしいときは string 型にキャストします

● セッションの値を削除する

Session["login_name"] = "";
Session.Remove("login_name");

● セッションを初期化する

Session.RemoveAll() 

https://msdn.microsoft.com/ja-jp/library/cc338759.aspx

● すべてのセッションの値を表示する(ダンプ)

            foreach (string key in Session.Keys)
            {
                Debug.WriteLine( key + " - " + Session[key].ToString() + "<br />"  );
            }

● NLogの内部ログ(Internal Log)を表示させる

NLog.Configに以下のように設定します

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      internalLogFile="C:\<あなたのプロジェクトディレクトリ>\internal.log"
      internalLogLevel="Trace"
      internalLogToConsole="true"
      internalLogToConsoleError="true"
      internalLogToTrace="true" >
No.1242
06/11 10:42

edit

.NET の ログクラス NLogを使用する

● NLogのインストール

NuGetからインストールします。 Visual Studioなら「ソリューションエクスプローラー」を右クリックして「NuGetパッケージの管理」から「NLog」を検索してインストールします

● NLogの使い方

  1. NLogを使いたいクラスにプロパティ logger をセットします。

         private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
    
  2. ログへ出力します

    logger.Info( "情報ログ" );
    logger.Debug( "デバッグログ" );
    logger.Trace( "トレースログ" );
    

● NLogのログレベル

ログにはレベルが存在します。レベルによって処理を分けたりするためです。
(エラーの時は別ファイルに保存したり、エラーの時はメールを送信したりといった感じです。)

(NLogのログレベル。上から順に需要)

  logger.Fatal("致命的レベル");
  logger.Error("エラーレベル");
  logger.Warn("警告レベル");
  logger.Info("情報レベル");
  logger.Debug("デバッグレベル");
  logger.Trace("トレースレベル");

● ログの設定

NLog.Config というファイルがインストール時に自動生成されます (自動生成されないこともあります。) その時は以下のようなファイル NLog.Config を プロジェクトのフォルダに作成します。

NLog.Config

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<targets>
  <target name="normal" 
          xsi:type="File" 
          encoding="UTF-8" 
          lineEnding="LF" 
          fileName="${basedir}/logs/event.log" 
          layout="[${longdate}] [${uppercase:${level:padding=5}}] ${callsite}() [${message}] ${exception:format=tostring}" 

          archiveNumbering="Date" 
          archiveFileName="${basedir}/logs/archive/{#}-event.log" 
          archiveEvery="Day" archiveDateFormat="yyyyMMdd" 
          maxArchiveFiles="7" />

    <target name="error" 
            xsi:type="File" 
            encoding="UTF-8" 
            lineEnding="LF" 
            layout="[${longdate}] [${uppercase:${level:padding=5}}] ${message} - ${callsite}() ${exception:format=tostring}" 
            fileName="${basedir}/logs/error.log" 
            archiveNumbering="Date" 
            archiveFileName="${basedir}/logs/archive/{#}-error.log" 
            archiveEvery="Day" archiveDateFormat="yyyyMMdd" 
            maxArchiveFiles="7"/>

</targets>

  <rules>
      <logger name="*" minlevel="Info" writeTo="normal" />
      <logger name="*" minlevel="Trace" writeTo="normal" />
      <logger name="*" levels="Error,Fatal" writeTo="error"/>
  </rules>

</nlog>

${basedir} というのが出てきますが、これは AppDomain.CurrentDomain.BaseDirectory の事です。
場所がわからない場合は次のようにして確認してみてください。

Debug.WriteLine( AppDomain.CurrentDomain.BaseDirectory );

● try catch で使用する

DB処理など try catch したい場合は次のように記述します

                try
                {
                    logger.Info( "DB処理 - 開始" );
                    // ここにDB処理
                    logger.Info( "DB処理 - 正常完了" );
                }
                catch (Exception ex)
                {
                    logger.Error( ex );
                    throw;
                }
No.1241
06/05 20:40

edit

.NET C# の try catch 例外エラー サンプル

.NET C# の try catch 例外エラー サンプル
スニペットとして登録しておいておくといいと思います。

            try
            {
                // Your code here ...
            }
            catch (Exception ex)
            {
                logger.Error( ex );
                Debug.WriteLine( "=======================================" );
                Debug.WriteLine( ex.Message );
                Debug.WriteLine( "=======================================" );
                Debug.WriteLine( ex.StackTrace );
                Debug.WriteLine( "=======================================" );
                Debug.WriteLine( "エラーが発生しました" );
                throw;
            }
No.1240
07/26 15:06

edit

SQL Server で 日付を整形する

FORMAT関数のほうがCONVERT 関数より使いやすいです

● format

SELECT FORMAT(GETDATE(),'yyyyMMdd')
      ,FORMAT(GETDATE(),'yyyy/MM/dd')
      ,FORMAT(GETDATE(),'yyyy/MM/dd HH:mm:ss')
-----------------------------------------------------
20180531
2018/05/31
2018/05/31 10:05:23

● convert

SELECT CONVERT (date, getdate()) 
            ,CONVERT(NVARCHAR, getdate(), 112)
-----------------------------------------------------
2018-05-31
20180531
No.1238
05/31 10:21

edit

VS codeのおすすめ拡張機能と設定の変更

WEB系エンジニアにオススメのVisual Studio Code の拡張機能

VS Code

https://code.visualstudio.com/

● 爆速 自動リロードサーバ 「Live Server」

かなり高速です。gulpの「gulp-webserver」「gulp-connect」より速い。

・VS code Live Server の起動方法

・VS code で表示させたいフォルダを開く
・「Command + Shift + P」 → 「Live Server: Change Liver Server work space」からフォルダを選択
・「Command + Shift + P」 → 「Live Server: Open with Liver Server」でブラウザで 「http://127.0.0.1:5500」が開く
(または画面一番下のステータスバーのところ Go Live を押しても ok)

● ブックマーク機能をつける「Bookmarks」

https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks

● ケースを変換 ( PascalCase → camelCase )

https://github.com/wmaurer/vscode-change-case

● = でコードを揃える「Code alignment」

https://marketplace.visualstudio.com/items?itemName=cpmcgrath.Codealignment

● 選択範囲の拡張を細かくする「expand-region」

https://marketplace.visualstudio.com/items?itemName=letrieu.expand-region
インストール後に「expand-region」の動作を「Command + space」に割り当てると SublimeTextぽくなります。

● HTML + CSS 用インテリセンス(IntelliSense for CSS class names in HTML)

https://marketplace.visualstudio.com/items?itemName=Zignd.html-css-class-completion

● SHIFT + return で <BR> コードを入力する (Insert <br> Tag)

● PHP用 インテリセンス

入力補完や( command + shift + o → : )でメソッド一覧を表示することができます。 https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-intellisense

● ファイル比較(diff)

比較したい二つのファイルを開いておいて「Command + shift + P」 → 「diff」でファイル比較を実行してくれます

● デフォルトのカラーテーマの色を変更する

C:\Program Files\Microsoft VS Code\resources\app\extensions\theme-defaults\themes

を変更する

● ローカルのファイル名入力を自動で保管

https://marketplace.visualstudio.com/items?itemName=JerryHong.autofilename

● 自動でバックアップ

https://marketplace.visualstudio.com/items?itemName=xyz.local-history

● SCSS (SASS) をコンパイル 「Live Sass Compiler」

次のような設定ファイルを「Code」→「基本設定」→「設定」 に記述しておきます。
.scss ファイルを開いて、画面一番下の Watch アイコンをクリックして、 .scss ファイルを保存すると自動的に 「 ../css/xxxxx.css 」「 ../css_min/xxxxx_min.css 」ファイルが生成されます。

      // Live Sass Compiler
      "liveSassCompile.settings.formats":[
        // css
        {
            "format": "expanded",
            "extensionName": ".css",
            "savePath": "~/../css/"
        },
        // css (minified)
        {
            "format": "compressed",
            "extensionName": ".min.css",
            "savePath": "~/../css_min/"
        }

● CSSを自動でフォーマット

https://marketplace.visualstudio.com/items?itemName=mrmlnc.vscode-csscomb

・インストール後の設定方法

1. 設定ファイルを下記サイトから作成する

http://csscomb.com/config

2. 任意のフォルダに csscomb.json で保存する

csscomb.json の 例

{
    "remove-empty-rulesets": true,
    "always-semicolon": true,
    "color-case": "lower",
    "block-indent": "\t",
    "color-shorthand": false,
    "element-case": "lower",
    "eof-newline": true,
    "leading-zero": true,
    "quotes": "double",
    "space-before-combinator": " ",
    "space-after-combinator": " ",
    "space-between-declarations": "\n",
    "space-before-opening-brace": " ",
    "space-after-opening-brace": "\n",
    "space-after-selector-delimiter": " ",
    "space-before-selector-delimiter": "",
    "space-before-closing-brace": "\n",
    "vendor-prefix-align": true
}

3. VS code の設定ファイルに csscomb.json の場所を記述して保存

      // CSS, scssファイル保存時にCSSCombを実行
      "csscomb.formatOnSave": true,
      // csscomb.json の場所を指定
      "csscomb.preset": "YOUR_FOLDER/VS_code_csscomb/csscomb.json"

● VS Codeでダブルクリックした時にハイフン( - )も選択されるようにする

「Code」 →「基本設定→「設定」を開き、
左側の設定見本の editor.wordSeparators を右側に追加し ダブルクリック時に選択されて欲しい文字を消す。

  "editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",

↓ (例: $ と - を消します)

      // ダブルクリック時に自動選択して欲しくない文字
      "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?" ,
添付ファイル1
No.1237
08/17 14:22

edit

添付ファイル

SQL Server の トランザクションとロック メモ

● A. トランザクションの分離レベル4種類

非コミット読み取り(READ UNCOMMITTED)
コミット済み読み取り(READ COMMITTED)
再読み込み可能読み取り(REPEATABLE READ)
直列化(SERIALIZABLE)

● A. トランザクションの分離レベル4種類をセットするSQL文

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

● B. トランザクションの開始と終了

・1. トランザクションの開始

トランザクションの開始を宣言します(これがないとロックしません)

BEGIN TRANSACTION

・2. トランザクションのコミット(トランザクション開始からCOMMITまでの処理をすべて実行します)

COMMIT

・3. トランザクションのロールバック(トランザクション開始からCOMMITまでの処理をすべてキャンセルします)

ROLLBACK TRANSACTION

● ロックのタイムアウト

・1. 現在のロックのタイムアウト時間を調べる

デフォルトのロックのタイムアウト時間を調べます

SELECT @@lock_timeout AS default_lock_timeout;

-1 の値が返ってきたときはタイムアウトしません(恐ろしい...)

・2. ロックのタイムアウト時間を設定する

ロックのタイムアウト時間を 30秒 に設定する

SET LOCK_TIMEOUT 30000 

msec で指定するので30秒にセットするときは 30000 になります。

● C. SELECT時に排他ロックをかける

排他ロックは通常 INSERTやUPDATEなどの更新処理のタイミングでかかりはじめます。 SELECTをする時からロックを開始したいときは明示的にロックをかけます

select max(ID) AS maxid from MY_TABLE WITH(XLOCK);

WHERE句が来るときは位置に注意

select * FROM MY_TABLE WITH(XLOCK) WHERE ID = 5 ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION
SELECT * FROM EV100TL
ROLLBACK TRANSACTION
No.1236
05/25 21:56

edit

Visual Studio 2017 を SublimeText ライクに操作する

● Visual Studio 2017 で Ctrl + D でマルチカーソルを扱えるようにする「SelectNextOccurrence」

https://github.com/2mas/SelectNextOccurrence

インストール後に「ツール」→「オプション」→「キーボード」からショートカットを登録すれば使えるようになります。

● Visual Studio 2017 で 縦の行間を変える「Line Press」

https://marketplace.visualstudio.com/items?itemName=OmarRwemi.LinePress

No.1235
05/25 10:32

edit

C# で 正規表現にマッチするかどうか判別しマッチした文字列を抜き出す

using System.Text.RegularExpressions;

matchedObject.Success の true または false でマッチしたかどうかを判別し、
マッチした文字列は matchedObject.Groups 配列から取り出します

string Url = "http://google.co.jp/";
Match matchedObject = Regex.Match(Url, @"https?://google(.+)");
if ( matchedObject.Success)
    {
        var country = matchedObject.Groups[1].Value;
    }
No.1234
05/24 22:31

edit

.NET Core 2 で Tweetinvi を使って Twitter API を叩く

.NET Core 2 でTwitter API を叩きたいときは Tweetinvi を使うといいでしょう。(CoreTweetではなく。)

● Tweetinvi パッケージのインストール

Visual Studio からパッケージを「Tweetinvi」で検索してインストールするか

Install-Package TweetinviAPI

コマンドでインストールします。

● 簡単な使い方

・ツイートする

Auth.SetUserCredentials("CONSUMER_KEY", "CONSUMER_SECRET", "ACCESS_TOKEN", "ACCESS_TOKEN_SECRET");
Tweet.PublishTweet("Hello World!");

(以降、Auth は省略します)

・ツイートIDからツイート情報を取得する

var status = Tweet.GetTweet(999226655250956288);
No.1233
05/24 21:04

edit

.NET C# の日付クラス DateTime

● 現在の日付の日付クラスを作成

DateTime date = DateTime.Now;

● 現在の日付を 任意のフォーマットで取得

DateTime dt = DateTime.Now;
var d1 = dt.ToString( "yyyyMMdd" );
var t1 = dt.ToString( "HHmmss" );
20180528
120559

● 任意の文字列から日付クラスを作成

var start_str = "20180215131723";
DateTime dt = DateTime.ParseExact(start_str, "yyyyMMddHHmmss", new CultureInfo("ja-JP"));

● 日付の比較

オブジェクト同士なら 比較演算子( > や = など)で比較できます
No.1232
05/30 16:24

edit

.NET Core の Entity Framework で直接SQL文を実行する

.NET Coreでは基本 Entity Framework を使用するので直接SQL文を実行する事はありませんが、たまにSQL文を実行したい時があります。 Entity Frameworkを使用するので簡単なSQL文を実行したいだけの時でも「モデル」と「コンテキスト」は定義しておく必要があります。

引用 : https://docs.microsoft.com/ja-jp/aspnet/core/data/ef-mvc/advanced?view=aspnetcore-2.0#raw-sql-queries

● SQL文を直接実行(エンティティを返す)

(DBコンテキスト : _context)(テーブル:MYTABLE) を操作します

string sql = "SELECT * FROM MYTABLE";
var result = _context.Mytable.FromSql(sql);

パラメータを渡したい場合は以下のように記述します

using System.Data.SqlClient;
var sp = new SqlParameter("nm", "tanaka");
var result = this.db.Ev100tl
    .FromSql("SELECT TOP 1 * FROM EV100TL WHERE NAME = @nm", sp);

● SQL文を直接実行

非クエリ コマンドに対して Database.ExecuteSqlCommand を使用します。

引用 : https://docs.microsoft.com/ja-jp/aspnet/core/data/ef-mvc/advanced?view=aspnetcore-2.0#raw-sql-queries

No.1231
05/25 15:08

edit

データファーストでモデルファイルを作成する

DBにテーブルを構築後モデルファイルを自動で生成するにはプロジェクトフォルダ( .sln ファイルがあるディレクトリの1つ下の階層)から PowerShell を立ち上げ、次のようにコマンドを入力します

コマンド の書き方

dotnet ef dbcontext scaffold  <connection_string>  <provider>
dotnet ef dbcontext scaffold "Server=データベースサーバ名;Database=ScaffoldDB;Trusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -o Models

例 :

DBサーバ : MYPC\SQLEXPRESS
データベース : MyDb

の場合

dotnet ef dbcontext scaffold "Server=MYPC\SQLEXPRESS;Database=MyDb;Trusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -o Models

● すでにモデルファイルが生成済みなので上書きできないエラーが出る場合

-f オプションで上書きします。(一番最後に -f をつけて実行します)

dotnet ef dbcontext scaffold "Server=データベースサーバ名;Database=ScaffoldDB;Trusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -o Models -f

● dotnet ef コマンドが使えない場合

1. .csproj ファイルの Project 配下に以下のコードを追加

<ItemGroup>
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>

2. コマンド

dotnet restore

を実行すると dotnet ef コマンドが使用できるようになります。

No.1230
07/04 12:32

edit

.Net core mvc で appsettings.json の設定をコントローラーから利用する

引用 : https://qiita.com/TsuyoshiUshio@github/items/f45700dc2e95e7c3992a

● appsettings.json ファイルに設定を書き込む

appsettings.json

  "MySettings": {
    "KEY": "hogehoge",
    "SECRET": "fugafuga",
  }

● モデルファイル AppSetting.cs を作成する

「Models」フォルダを右クリックして新しいクラスを作成します
appsettings.json の中身をすべてコピーして「編集」→「形式を選択して貼り付け」→「JSONをクラスとして張り付ける」を実行すると時間が短縮できます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace <あなたのプロジェクト名>.Models
{
    public class AppSettings
    {
        public Mysettings MySettings { get; set; }

        public class Mysettings
        {
            public string KEY{ get; set; }
            public string SECRET { get; set; }
        }

    }
}

● Startup.cs の書き換え

using <あなたのプロジェクト名>.Models;
using Microsoft.Extensions.Options;

を先頭に追加し、次のメソッドを書き換え

   public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.Configure<AppSettings>(Configuration);
        }

● コントローラー HomeController.cs の書き換え

using <あなたのプロジェクト名>.Models;
using Microsoft.Extensions.Options;

を先頭に追加し、次のプライベート変数とコンストラクタを追加

        private readonly AppSettings appSettings;

        public HomeController(IOptions<AppSettings> optionsAccessor)
        {
            this.appSettings = optionsAccessor.Value;
        }

以上でコントローラーの各メソッドで this.appSettings から appsettings.json の値が参照できます。

No.1229
05/24 09:29

edit

C#の命名規則

C#の命名規則について調べてみるとそこまで厳格には決められていない(例:プライベートメソッドは Camel ? または Pascal?) ので皆さんそれぞれ採用されているようですが

こちらの決め方がよいと思います
https://jikkenjo.net/309.html

privateなものはCamel
publicなものはPascal
静的な定数はPascal
インターフェイスのプレフィックスとして[I(大文字のアイ)]を付ける

プライベートメソッドは ... Pascal に一票(ここは宗教論争ですね)入れたいと思います。

参考 https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/naming-guidelines http://taka-say.hateblo.jp/entry/2014/05/26/005005

No.1228
05/23 19:20

edit

.NET core mvc の razorテンプレート

● Razorテンプレートへの値のセットとテンプレートでの表示

1. 値のセット

HogeController.cs

        public IActionResult Fuga()
        {
            ViewData["Message"] = "メッセージの表示テストです";
            return View();
        }

2. テンプレートでの表示

Fuga.cshtml

<h2>@ViewData["Title"]</h2>

3. ブラウザでの表示

デバッグを実行してブラウザのアドレス欄に http://localhost:50914/Hoge/Fuga と入力して移動すると

<h2>メッセージの表示テストです</h2>

が出力されます。

● RazorテンプレートからコントローラーへフォームのPOSTデータを渡す方法(1.ベタなやり方)

「Input」で渡した値を「Confirm」で受け取ってみます

Input.cshtml (入力画面)

    <form asp-controller="Hoge" asp-action="Confirm" method="post">
        @Html.AntiForgeryToken()
        <input type="text" name="Email" >
        <input type="text" name="Url" >
        <input type="submit" value="送信する">
    </form>

HogeController.cs (確認画面 - コントローラ)

        // POST: Hoge/Confirm
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Confirm(string Email, string Url)
        {
            ViewData["Email"] = Email;
            ViewData["Url"] = Url;
            return View();
        }

Confirm.cshtml(確認画面 - ビュー)

        <table>
            <tr>
                <td>Email</td>
                <td>@ViewData["Email"]</td>
            </tr>
            <tr>
                <td>Url</td>
                <td>@ViewData["Url"]</td>
            </tr>
        </table>

● RazorテンプレートからコントローラーへフォームのPOSTデータを渡す方法(2.スマートなやり方)

(1.)と同じく「Input」で渡した値を「Confirm」で受け取ってみます。
この時モデルを定義してモデルを受け渡します。

Input.cshtml (入力画面)

    <form asp-controller="Toukous" asp-action="Confirm" method="post">
        @Html.AntiForgeryToken()
        <input type="text" name="Email" >
        <input type="text" name="Url" >
        <input type="submit" value="送信する">
    </form>

Models/Hoge.cs(モデル)

namespace Hoge.Models
{
    public class Toukou
    {
        public int ID { get; set; }
        public string Email { get; set; }
        public string Url { get; set; }
    }
}

HogeController.cs (確認画面 - コントローラ) view()の引数で「テンプレートファイル」「モデル」を渡しています

        // POST: Hoge/Confirm
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Confirm(Toukou model)
        {
            return View("Confirm", model);
        }

Confirm.cshtml(確認画面 - ビュー) テンプレート cshtml の一番上でモデルのクラスを指定します。

@model <プロジェクト名>.Models.<モデルのクラス名>

@model Myapp.Models.Entry
        <table>
            <tr>
                <th>@Html.DisplayNameFor(model => model.Email)</th>
                <td>@Html.DisplayFor(model => model.Email)</td>
            </tr>
            <tr>
                <th>@Html.DisplayNameFor(model => model.Url)</th>
                <td>@Html.DisplayFor(model => model.Url)</td>
            </tr>
        </table>

● テンプレートのレイアウトファイル(継承元)

デフォルトではレイアウト(継承元)のテンプレートファイルは

Views/Shared/_Layout.cshtml

にあります。

これは /Views/_ViewStart.cshtml に次のように定義されているので

@{
    Layout = "_Layout";
}

レイアウトファイルを変えたい場合はここを変更します。
レイアウトを使用しない場合は null をセットします。

● ドキュメントルートの参照

チルダ ~ でドキュメントルートを参照できます。

<img src="~/Content/hoge.gif" alt="サンプル画像" />

参考 : http://blog.mamemaki.com/entry/2015/06/30/142450

No.1224
06/13 13:20

edit

.NET Core MVC モデルの追加とDBマイグレーション、コントローラー自動作成方法

コードファーストでDBとコントローラーを作成します。

● 1. モデルファイルの追加

「ソリューションエクスプローラー」→「/Models」を右クリック → 追加 → 「クラス」(モデルの名前を入力して「追加」)

● 2. モデル(DB定義)の記述

Movieクラスを作成した場合
/models/Movie.cs

    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }

● 3. DBマイグレーション

Visual Studioの「パッケージマネージャー コンソール」から

Add-Migration Initial
Update-Database

(または PowerShellから同様のコマンドを実行することができます。Mac、Unixの場合はこちら)

dotnet ef migrations add Initial
dotnet ef database update

● 4. コントローラーの自動生成

「ソリューションエクスプローラー」→「/Controllers」を右クリック → 追加 → 「コントローラー」 →「Entity Frameworkを利用したビューがあるMVCコントローラー」(モデルクラスを選択して「追加」)

● 5. 実行

「f5」でアプリを実行し
http://localhost:50914/Movies
へ移動し動作を確認する。

No.1225
05/23 22:10

edit

SQL Server へ 「SQL Server認証」でログインするユーザーを作成し .Net アプリのDB接続に使用する

SQL Serverへのログインはデフォルトでは Windows認証となっていますが、
ユーザーとパスワードをしていすればログインできる「SQL Server認証」でログインできるようにしてみます。

● 1. 「SQL Server認証」でログインするユーザーを登録する

Microsoft SQL ServerManagement Studio を起動して次のようにします。

「セキュリティ」→「ログイン」を右クリックして「新しいログイン」を選択する
・「ログイン名」を入力する
・「SQL Server認証」を選択する
・「パスワード」「パスワードの確認入力」を入力する
・「パスワードポリシーを適用する」のチェックを外す(簡単なパスワードを許可したい場合)
・「既定のデータベース」、使用したいデータベースを選択
・「既定の言語」、 Japanese を選択
・「ユーザーマッピング」ページへ移動し操作したいデータベースの横にある「マップ」のチェックボックスのチェックをつける
・操作したいデータベースを選択し、下の画面の「db_owner」にチェックをつける

● 2. DB全体の認証モードを変更する

1. モード認証を変更

サーバー名を右クリック → プロパティ → 「セキュリティ」を選択 →「SQL Server認証モードとWindows認証モード」を選択 → OK

2. SQL Server を再起動

SQL Server 構成マネージャー から SQL Server を再起動する

● 3. ログインの確認

Microsoft SQL ServerManagement Studio を起動して 「SQL Server認証」 を選択し先ほど入力したIDとパスワードでログインできることを確認する。

● 4. .NET アプリでの使用

SQLサーバ名 : WINSERVER2016\\SQLEXPRESS
データベース名 : testdb
ID : hogehoge
PASS : mypass

で接続するには appsettings.json に次のように記述します。

"ConnectionStrings": {
    "DefaultConnection": "Server=WINSERVER2016\\SQLEXPRESS;Initial Catalog=testdb;MultipleActiveResultSets=true;User ID=hogehoge;Password=mypass"
  },

引用 : https://stackoverflow.com/questions/42921947/adding-a-sql-connection-to-my-asp-net-core-application-how-to-define-connectio

No.1221
05/12 00:07

edit

.Net 本番機でのエラーを把握する

web.config を次のように書き換えます

<aspNetCore processPath="dotnet" arguments=".\TestLoginApp5.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
<aspNetCore processPath="dotnet" arguments=".\TestLoginApp5.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
	<environmentVariables>
	<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
	</environmentVariables>
</aspNetCore>

No.1220
05/11 17:02

edit

dotnet コマンド CLI

● dotnet ef(EntityFramework)データベース コマンド

# CLI版を使う際には追加パッケージをインストールします。
dotnet add package Microsoft.EntityFrameworkCore.Tools.DotNet

# Add-Migration 適当な名前
dotnet ef migrations add 適当な名前

# Remove-Migration
dotnet ef migrations remove

# Update-Database
dotnet ef database update

# Drop-Database
dotnet ef database drop

引用: EntityFrameworkCoreを.NET Core コンソールアプリでCodeFirstに使う - Qiita

No.1219
05/11 11:13

edit

.Net Core MVC で ユーザー認証のアプリを5分で作成する。データベースをSQLiteに変更する

● 1. Visual Studio 2017 から 新規プロジェクトを作成する

その際以下の認証機能を追加します

・メニューの「新規作成」→「プロジェクト」→「ASP .Net CORE MVCアプリケーション」で【OK】を押す。
・「Webアプリケーション(モデル ビューコントローラー)」「認証の変更」「個別のユーザーアカウント」を選択して【OK】を押す。

これでプロジェクトファイルとソースコード一式が生成されます。

● 2. 接続するデータベースの設定とデータベース名を変更する

appsettings.json の DB接続の項目を変更します。

appsettings.json

  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-TestLogin4-3FFC9AB5-5122-4BFD-9097-4F6113EE0EA3;Trusted_Connection=True;MultipleActiveResultSets=true"
  },

これの

"DefaultConnection": "Server=(localdb)\\mssqllocaldb;

DefaultConnectionを ローカルDBからSQL Server に変更します ↓

PCの名前が MYPCの場合

"DefaultConnection": "Server=MYPC\\SQLEXPRESS;

またデータベース名はデフォルトでは
aspnet-TestLogin4-3FFC9AB5-5122-4BFD-9097-4F6113EE0EA3 といった長い名前がつけられます。 これも好きな名前に変えておきます。

Database=aspnet-TestLogin4-3FFC9AB5-5122-4BFD-9097-4F6113EE0EA3;

↓ (データベース名を mydb に変更します)

Database=mydb;

● 3. データベースのマイグレーション

A. パッケージマネージャーコンソール を使用する場合

パッケージマネージャーコンソールから

Update-Database

と入力します。

B. PowerShellを使用する場合

PowerShellを開き、プロジェクトがあるディレクトリに移動してから

dotnet ef database update

と入力します。

以上です。

● 4. Visual Studio からビルドして実行する

ローカルで動作することを確認します

● (補足) WindowsマシンにSQL Serverがインストールされていない場合は下記のリンクから SQL Serverをインストールします

1. SQL Server 2017 Express をインストールする

(10GBまで無料の SQL Server 2017 Express をインストールします) https://www.microsoft.com/ja-jp/sql-server/sql-server-editions-express

2. SQL Server Management Studio をインストールする

https://go.microsoft.com/fwlink/?linkid=870039

● 5. データベースをSQLiteに変更する

せっかく マルチプラットフォーム対応の .NET Core なのでデータベースをMS以外のものに変更してみます。

1. Nugetから次のパッケージをインストールする

– Microsoft.EntityFrameworkCore.SQLite
– Microsoft.EntityFrameworkCore.SQLite.Desgin

2. Startup.cs を書き換える

Startup.cs の以下を書き換えます

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

↓ 「UseSqlServer」を「UseSqlite」に変更する

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));
}

3. appsettings.json の DB接続設定を変更する

SQLServerの場合は接続文字列がセットされていますが、そこを ファイル名に変更します。

 "ConnectionStrings": {
    "DefaultConnection": "Server=MYPC\\SQLEXPRESS;Database=test_user_auth_db;Trusted_Connection=True;MultipleActiveResultSets=true"
  },

  "ConnectionStrings": {
    "DefaultConnection": "Filename=./mydata.db"
  },

4. パッケージマネージャコンソールからマイグレーションする

Update-Database

これでアプリを実行すると SQLiteを使ってユーザー認証アプリを作成することができます。

注意: SQLite EF コア データベース プロバイダーの制限事項

https://docs.microsoft.com/ja-jp/ef/core/providers/sqlite/limitations

No.1218
07/04 15:56

edit

Visual Studio からFTPを使って .Net Core MVC アプリを手動でデプロイする

● 1.Visual Studio から Webデプロイパッケージ を使用しアプリの zip ファイルを作成する

・ Visual Studio 2017 を立ち上げてアプリのプロジェクトファイルを開く

・ 「ソリューションエクスプローラー」のプロジェクトを右クリックして「発行」

・ 「設定」を押して発行方法「Webデプロイパッケージ」にして発行する。

指定したディレクトリに .zip ファイルが生成されます。

●2. デプロイするサーバー側に .NET CORE SDK をインストールする

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

●3. デプロイパッケージをインポートする

・FTPを使ってサーバへ .zip ファイルを送信する

・「インターネット インフォメーション サービス (IIS) マネージャー」の左のメニューからアプリを配置したいサイトを選択し「アプリケーションのインポート」を実行する

.zip ファイルや 発行先ディレクトリの入力を求められるので入力します。

●4. .Net Core MVC アプリを起動する

・まず dotnet コマンドを使って組み込みサーバで動作を確認する

PowerShellを立ち上げて、該当ディレクトリに移動した後で次のコマンドを入力 (例: アプリ名が HelloWorld01 の場合)

 dotnet HelloWorld01.dll

組み込みサーバが立ち上がるので表示されるアドレスを入力して動作を確認します。 (確認後 Press Ctrl+C でサーバを終了。)

・サイトのurlを入力してアクセスを確認する

以上です。 手動のデプロイも簡単です。

No.1215
05/09 11:57

edit

Windows PowerShell の起動の仕方とエイリアスの設定

● Windows PowerShell の起動の仕方

Explorer で該当ディレクトリに移動しアドレス欄に powershell と入力して実行すると、該当ディレクトリをカレントディレクトリとして立ち上がります

● bash の .bash_profile のように、Windows PowerShell のエイリアスを設定する

● 管理者権限でPowerShell を起動し、以下を実行する

Set-ExecutionPolicy RemoteSigned

● 普通にPowerShell を起動し、以下を実行する

New-item –type file –force $profile
notepad $profile

ファイルが開くのでエイリアスを追加して保存する

Set-Alias g git
Set-Alias l Get-ChildItem

PowerShell を再起動するとエイリアスが使えるようになっています。

No.1212
05/11 11:13

edit

Windowsサーバに open sshd をインストールして他のマシンからWindowsへssh接続できるようにする

● 1. Windows用 ssh をダウンロードする

https://github.com/PowerShell/Win32-OpenSSH/releases
(64bit版、32bit版どちらもあるのでお使いのサーバ用の zip ファイルをダウンロード)

● 2. 解凍して任意の場所に置く

c:\openssh\

に置きます。

● 3. 環境変数にパスを追加する

・「Windowsアイコンを右クリック」→「システム」をクリック
・「システムの詳細設定」→「環境変数」をクリック
・「システム環境変数」の 「Path」 を選択して「編集」をクリック。
・「追加」を押して「C:\openssh」を追加

● 4. sshサーバをインストール

Power Shellを起動して以下を実行します

cd \openssh
.\install-sshd.ps1
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH

● 5. sshサーバの自動起動をセット

Power Shellを起動して以下を実行します

Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic

● 6. Windowsサーバを再起動

再起動後に他のマシンからssh接続を確認します。

No.1204
05/10 10:45

edit