しばやん雑記

ASP.NET Core とメイドさんが大好きなフリーランスのプログラマーのブログ

ASP.NET Core

ASP.NET Core / Azure Functions で App Configuration と Key Vault を使って設定を一元化する

アプリケーションが 1 つとかの場合は App Service の App Settings や Connection Strings を使って設定すれば良いのですが、数が多くなったり環境が増えてくると大体管理しきれなくなって破綻する傾向にあります。Infrastructure as a Code の考えで ARM T…

.NET Core 3.0 で有効化される Tiered Compilation と ReadyToRun について

.NET Core 3.0 の新機能として紹介されている Tiered Compilation と ReadyToRun について気になっていたので、夜なべして調べました。2.2 の例があったので RTM 前に書くのは心配ですが、流石に大丈夫かなと思ったので。*1 Tiered Compilation ufcpp にぃに…

ASP.NET Core と Azure Functions でのローカライズについて一通り試した

Twitter で ASP.NET Core / Azure Functions のローカライズに関する話になった時に、そういえば試してなかったなと思ったので一通り触って理解を深めておきました。考えられる部分、全て触ってみたので非常に長くなりました。概要を先にまとめます。 規約ベ…

Task ベースの初期化が必要なクラスを .NET Core の DI で利用する

.NET Core / ASP.NET Core で追加された Dependency Injection は Task ベースの Factory は用意されておらず、ドキュメントではサービスの解決は同期的に行うよう推奨されています。とはいえ、Task ベースでの初期化が必要な場面がちょいちょいあるので、何…

ASP.NET Core アプリケーションにも Azure Pipelines でバージョンを付ける

.NET Core から AssemblyInfo.cs に書いていたバージョンなどを、MSBuild を使ってビルド時に自動生成されるようになったので、簡単にアセンブリのバージョンを CI で埋め込めるようになりました。NuGet 向けでは普通にビルド時にバージョンを付けてきました…

ASP.NET Core アプリケーションでも web.config をカスタマイズしたい

ASP.NET Core のプロジェクトを dotnet publish を使って発行すると自動的に web.config が作られるようになっています。基本的に IIS や App Service でホストする場合には必須です。自動生成されるので IIS 周りのカスタマイズが難しそうに見えますが、比…

ロリポップ!マネージドクラウドで ASP.NET Core 2.2 アプリを動かしてみる

タイトルの通りですが .NET Core に対応したということだったので、実際に契約して試してみました。新しくプロジェクトを作成する画面に .NET Core が出てくるので、それを選んで情報を入力して行けばサクサク作れます。関係ないですが、標準で Let's Encryp…

Azure App Configuration の Feature Management が便利そうだったので試した

恐らく Build 2019 に合わせたと思ってますが、Azure App Configuration がアップデートされて Feature Management という新しい機能が追加されています。公式にも A/B テストとか、新しい機能の段階的なリリースにも使えると紹介されています。App Service …

ASP.NET Core Module V2 の In-Process Hosting はアプリケーションプールで 1 つだけ利用可能

ASP.NET Core 2.2 から使えるようになった ANCM V2 の In-Process Hosting はパフォーマンス面で有利なので使っていきたいし、そもそもデフォルトは InProcess になっているので勝手に使っていると思うのですが、タイトルの通りの制約があるので注意です。In…

Azure SignalR Service の Service Mode 設定による違い

Azure SignalR Service を仕事で少し使ったときに、設定が増えていることに気が付いたので調べたのですが、中の人に聞くまで情報がほぼ無かったのでメモとして残します。そして Serverless mode がかなり良かったので、それの紹介も簡単にですがします。チャ…

ASP.NET Core の HSTS はデフォルトだと有効期間が短い

ASP.NET Core は 2.1 からプロジェクトの作成時に HTTPS 用の構成を有効化すると、デフォルトで本番環境の場合には HSTS が有効になっています。同時に HTTPS へのリダイレクトも有効になります。デフォルトの HSTS は有効期間が 30 日と短めになっています…

C# と Polly を使って回復力の高いアプリケーションを書く

昔のように高い信頼性を持つオンプレのハードウェア上で動いていたアプリケーションとは異なり、昨今のクラウド上で動いているアプリケーションは障害が発生する前提でコードを書く必要があります。クラウドのハードウェアは毎日どこかで壊れるので、それを…

ASP.NET Core 2.2 で追加された Endpoint Routing と Core MVC での互換性

いろんな場所でちょいちょい話してた Endpoint Routing について調べたので書きます。パフォーマンス改善が目立った ASP.NET Core 2.2 の更新内容としては、唯一 Endpoint Routing は特定のパターンでは Breaking change となります。そもそも Endpoint Rout…

Azure App Service 上での ASP.NET Core 2.2 のパフォーマンス

ASP.NET Core 2.2 と同時にリリースされた ANCM v2 が +400% パフォーマンス改善したと書かれていたので、実際どのくらいまで頑張れるのか調べたくなりました。ブログにあった +400% という数値は恐らく物理マシンを使っているので、実際に Azure 上の一般的…

Azure App Service で ASP.NET Core 2.2 と ANCM v2 が使えるようになった

.NET Core 2.2 リリース時には 12 月末までの対応が宣言されていた Azure App Service での .NET Core 2.2 対応ですが、全リージョンへのデプロイが完了したようです。デプロイのタイミングによっては .NET Core 2.2 はインストールされていても、ASP.NET Co…

ASP.NET Core 2.2 で追加された Health Checks API の基本的な使い方とカスタマイズ

ASP.NET Core 2.2 から Health Checks API が実装されました。最近の Container や Microservices の流れでは必須機能と言えるので、シンプルな API として実装されたのは良い感じです。ドキュメントがありますが重要な機能だからかとても長いです。過去最長…

ASP.NET Core / Entity Framework Core 2.2 と Cosmos DB SDK の改善

書く気力がほぼ無かったんですけど、Cosmos DB の .NET SDK がついに OSS になったのを記念して書きます。.NET Core 3.0 とか Visual Studio 2019 は詳しい人が何か書くはず。とりあえずブチザッキと ufcpp.net を読んでおけば大体は掴めます。Preview 3 の…

ASP.NET Core 向けに Azure Table Storage を利用する Configuration Provider を書いた

タイトルの通りですが、ASP.NET Core と一緒に追加された Configuration 周りは Provider を実装すると簡単に拡張できるようになっているので、実際に Azure Table Storage 向けの実装を書いて試してみました。流れとしては以下の 2 つを継承したクラスを実…

ASP.NET Core 2.2 / Entity Framework Core 2.2 Preview 3 の気になった機能

今年の終わりにリリース予定の .NET Core 2.2 ですが、ASP.NET Core と Entity Framework Core に関しては Preview 3 で機能が出そろった感があるので、簡単に確認をしておきました。予定通り 2.2 は小規模なリリースとなるので、これ以上の追加は無いかと思…

ASP.NET Core 2.1 で未ログイン時にリダイレクトされる条件を調べた

ASP.NET Web API が追加されたときに問題になった、HTTP 401 を返すとリダイレクトに変換される挙動ですが、ASP.NET Core 2.1 でも近い挙動になるようにデフォルトで設定されています。当時は謎のキーを追加しましたが、結局 ASP.NET 自体にフラグが追加され…

Library Manager を使ってクライアントサイドのライブラリをシンプルに利用する

Visual Studio 2017 の 15.7 ぐらいで入ると言われていて入らなかった Library Manager が、こないだリリースされた 15.8 で入るようになりました。これまで Visual Studio では NuGet や Bower が標準でサポートされてましたが、今回の Library Manager は…

LTS になった .NET Core 2.1.3 がリリース

.NET Core 2.1 が LTS になると言われ続けて多少時間がかかっていましたが、2.1.3 でようやく LTS が宣言されました。3 年間の長期サポートが提供されます。予定通り .NET Core 2.0 は 10 月頭でサポートが切れるはずです。早めの移行を。これまでと同様に A…

ASP.NET Identity から ASP.NET Core Identity へ移行してみた

ASP.NET MVC 5 から Core MVC 2.1 への移行作業を行っていますが、地味に Identity 周りの移行ではまった部分が多かったのでメモとして残します。作業としては DB のマイグレーションがメインです。移行に関してはドキュメントがありますが、正直これは役に…

ASP.NET Core 用のメタパッケージを絶対に使うべき理由

ASP.NET Core 2.0 から導入された必要なパッケージを一通り参照するメタパッケージですが、あまりにも参照が多いので何となく嫌な感じがする人はいると思いますが、絶対に使うべきなので理由を書いておきます。メタパッケージに関しては公式ドキュメントにあ…

ASP.NET Core 2.1 の暗黙的なバージョンには注意

適当に Twitter を眺めていると、モリス先輩が ASP.NET Core Module 周りのエラーではまってそうだったので、また鰻を奢ってもらうために助けることにしました。曰く、Visual Studio のテンプレートから作成して、App Service にデプロイしただけで発生する…

ASP.NET Core の Dependency Injection はコンストラクタのオーバーロードに対応していない

ASP.NET Core 1.0 時代に書いた気もしますが、最近は ASP.NET MVC 5 から ASP.NET Core MVC 2.1 への移行を行っていて、いい感じに MVC 5 と Core MVC 2.1 で共存させないといけない部分があり、DI 周りではまったので調べました。まあ、タイトルの通り ASP.…

ASP.NET Core でもステータスコード単位でカスタムエラーページを表示したい

ASP.NET Core でも UseStatusCodePages を使えば 400-599 のステータスコードの場合に、専用のページを表示できることを前に書きました。最低限必要な機能はちゃんと揃っています。しかし UseStatusCodePages を使って対応できるのは、ステータスコードを UR…

ASP.NET Core 2.0 から 2.1 へのアップデートを行ったメモ

.NET Core 2.1 と ASP.NET Core 2.1 がリリースされたので、これまで 2.0 や 2.1 rc1 で開発していたアプリケーションを 2.1 にアップデートしてました。2.1 rc1 は特にやることないのですが、2.0 からはちょっと作業が必要だったのでメモ。といっても、基本…

.NET Framework / .NET Core 向け Docker Image のリポジトリが変更された話

多分 .NET Framework 4.7.2 と .NET Core 2.1 のリリースを狙ったタイミングだと思ってるのですが、この 2 つを利用するための公式 Docker Image のリポジトリが変更されています。地味に同じようなのにイメージが異なっていた .NET 系の Docker Image が統…

ASP.NET Core でカスタムエラーページを用意する

de:code 2018 の Ask the Speaker で貰った質問にサクッと回答できなかったので、検証した内容をブログに書いて残します。MVC と Web API でのエラーページ周りの質問だったと記憶してます。ASP.NET と IIS を使っている場合は Web.config で customErrors …