OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

CentOSにASP.NET Core 2.2でWeb API構築

AWS Lightsail のやっすいやつで CentOS 7 のインスタンスを立てたので、ASP.NET Core 2.2でWebサービスを作ってみる。

環境等

  • CentOS 7.6
  • VisualStudio Community 2019
    • 開発はローカルのWindowsマシンで行う
    • 「ASP.NET と Web 開発」ワークロードがインストールされていること
  • Apache 2.4.6
    • ASP.NET Core には Kestrel っていうデフォルトの Web サーバがついてくる
      • これだけでも動かせるはずだが、あんまりみんな使ってなさそう
    • Apache をリバースプロキシとして、リクエストを Kestrel に流すようにする
続きを読む

Travis CI Cron Jobs で .NET Core アプリを定期実行

GitHubと連携して使える CI サービス Travis CIには、ビルドタスクを定期実行させられる Cron Jobs という機能がある。

実行間隔は daily / weekly / monthly というレベルでしか指定できないので利用ケースは限られるが、これを使えば CI 的な用途に限らず、1日1回の cron的な処理を無料の環境で動かせるということだ。

Travis CI は .NET Core のビルドに対応しているので、C# でかいた簡単なアプリを動かしてみる。

なお .NET Core のみならず mono も対応してるっぽかったので、.NET Framework のアプリもそれなりに動きそうではある。

続きを読む

.NET コマンドライン引数の解析とUsage作成を行う「CuiCommandParser」を作成

C#/.NET のコンソールアプリで、実行コマンドに渡された引数の解析と、helpオプションで表示するヘルプメッセージ(Usage)用の文字列生成を行う機能をあわせてライブラリ化しました。

CuiCommandParser(NuGet)

ソースはこちら

続きを読む

ASP.NET HttpApplicationへの依存をスタブ化する

Visual C# .NET を使用して ASP.NET HTTP モジュールを作成する方法に、ASP.NETでhttpモジュールクラスを自作する方法が書かれている。

ポイントだけ書くと、以下のようになる。

  • IHttpModule インタフェースを実装する
  • HttpApplication から購読するイベントを選択
  • Init メソッド内で、そのイベントのハンドラを登録する
public void Init(HttpApplication app)
{
   app.BeginRequest += new EventHandler(OnBeginRequest);
}

ここで、Init メソッドで受け取る HttpApplication のインスタンスは、ASP.NETでマネージされているもの。
そして HttpApplication 内の BeginRequest などのイベントも ASP.NET 側から発生されるものになる。

困ったことに、IHttpModuleインタフェースがこの HttpApplication という具体クラスに依存しちまってるんで、テストどうしましょうね、という話。

続きを読む

ブログをWordPressからはてなブログに移行

VPSで運用してたWordPressをやめたいなーと思ってました。

  • バージョンアップめんどくさい
  • SSL化しなきゃと思いつつ腰が重い
  • markdown使いたいだけなのにプラグインが競合したりする
  • カスタマイズ自由と言われてもデザインセンスがないからいじれない
  • バックアップ自分でやるの心配

といった意識の低い理由で。

続きを読む