しばやん雑記

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

ASP.NET Core

Azure Functions (.NET Isolated Worker) に追加された ASP.NET Core Integration を一通り試した

今年の 11 月にリリース予定の .NET 8 と同時に .NET 向け Azure Functions は、これまでの In-Process モデルから Isolated Worker Process というモデルに統一されるのですが、正直なところ完成度が低いのと In-Process からの移行を全く考慮していない SD…

Application Insights の Code Optimizations 機能を ASP.NET Core アプリケーションで試してみた

少し前から Application Insights の Performance を開くと、上部に Code Optimizations というボタンが表示されるようになっています。隣にある Profiler は以前からある機能ですが、Code Optimizations はひっそりと追加された新しい機能となります。あま…

Azure Cosmos DB を ASP.NET Core の分散キャッシュのバックエンドとして利用する

少し前に Cosmos DB を ASP.NET Core の Distributed Cache Provider として使うライブラリの正式バージョンがリリースされました。ASP.NET 向けにも同じようなライブラリは出ていましたが、こちらは Cosmos DB SDK v3 で構築された最新版です。重要なことは…

ASP.NET Core アプリケーションのログアウト時に認証クッキーを確実に無効化する

ASP.NET Core では一般的にクッキー認証をベースとして使いつつ、その上に Twitter や Facebook などの外部プロバイダーを組み合わせて認証を実装しています。API 向けのように JWT を直接扱う場合以外は、基本はクッキーが有効になっているはずです。デフォ…

ASP.NET Core / Azure Functions アプリケーションの発行後サイズを削減する

Azure Storage を使った Run From Package で公開している Azure Functions 向けパッケージの転送量が、最近になって急激に増えたのでパッケージのサイズを削減して、Azure Functions で実行するための最適化を行ったのでメモとして残します。何故マネージコ…

.NET Conf 2020 Online - .NET 5 リリース記念パーティートーク フォローアップ

金曜の夜に .NET 5 のリリース記念と称して、.NET 好きメンバーを集めてアップデートや新機能について話をしました。考えていたタイムスケジュールが完全に崩壊してしまいましたが、2 時間で何とか収まりました。スピーカーは綺麗に興味が異なっていたので、…

Azure App Service の .NET 5 Early Access を一通り試してみた

.NET Conf 2020 で .NET 5 が正式リリースされましたが、同じタイミングで App Service での .NET 5 Early Access 機能が発表され、多少の制約はありますがリリースとほぼ同時に利用可能になりました。App Service Teams のブログと GitHub にドキュメントが…

GitHub Actions / Azure Pipelines 上での .NET Core アプリケーションのビルド時間を短縮する

最近は Azure DevOps で開発していたアプリケーションを GitHub に移行しつつ、ビルドとデプロイ周りを Azure Pipelines から GitHub Actions に切り替えていたのですが、アプリケーションのビルドに時間がかかっていたので短縮するために色々と作業をしまし…

ASP.NET Core 5.0 に向けて Azure 関連パッケージのアップグレードを行っておく

.NET Conf 2020 の日程も発表されて、既に Daily Build では RC や 6.0 が出ている .NET Core 周りですが、そろそろ 5.0 へのアップグレードに向けた作業を行っておくかーという気分になっています。ちなみに .NET Conf 2020 は 11 月 10-12 日での開催です…

みつばたんへの Twitter での Azure / ASP.NET Core アドバイスのまとめ

みつばたんが最近 ASP.NET Core MVC 周りで死ぬほどはまっていたみたいですが、ポートフォリオサイトを作っていたようです。自分は死ぬほどはまっていた時には全くアドバイスしなかったのに、大体動くようになってからアドバイスをするという徳の低いことを…

ASP.NET Core Web API と NSwag を使って OpenAPI 定義を自動生成する

昔は ASP.NET で Swagger / OpenAPI 定義を出力するには Swashbuckle が定番でしたが、あまりアクティブではない時期が長かったせいか最近は NSwag を使うようにしています。今では GitHub の Star 数も Swashbuckle より NSwag の方が多くなっています。Doc…

App Service と ASP.NET Core で Application Insights を有効化する方法を整理する

Azure App Service に ASP.NET Core アプリケーションをデプロイする時には、必ず Application Insights を同時に有効化するようにしていますが、有効化の方法として 2 種類が存在しているので軽くまとめておきます。自分でもこのあたりは割と混乱していたの…

IClaimsTransformation を使って ASP.NET Core のユーザーに独自のクレームを追加する

ASP.NET Core で認証を使っていて、標準のクレーム以外を User.Identity に持たせたくなったので実現する方法を調べました。ASP.NET 時代では Global.asax でイベントハンドラーを追加して Context.User を入れ替えて実現してましたが、ASP.NET Core にはそ…

ASP.NET Core 3.0 への移行時に悩んだ点と新しくなった Endpoint Routing について

ASP.NET Core 2.x から 3.0 への移行をプライベートと仕事のアプリケーション両方で試しました。基本的にはドキュメントの通り行えば良いので簡単ですが、少し別途対応が必要だった部分があるのでメモとして残しておきます。あと Endpoint Routing 周りにつ…

ASP.NET Core / Entity Framework Core 3.0 の気になった機能と 2.2 からの移行

.NET Conf 2019 で予定通り .NET Core 3.0 が GA しました。同時に ASP.NET Core 3.0 と Entity Framework Core 3.0 もこれまで通りリリースされています。2.0 の時と同じように 3.0 は LTS ではないので注意が必要です。11 月にリリースが予定されている 3.…

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…