しばやん雑記

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

ASP.NET Core

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 …

Application Insights で IP が取れない件と ASP.NET Core で Telemetry Initializer を追加する方法

ASP.NET Core アプリケーションに Application Insights を追加して使ってましたが、いつからかクライアントの IP アドレスが 0.0.0.0 になってしまってました。元々最後のオクテットは 0 になってたのは知ってましたが、なんか不具合化と思ってました。軽く…

.NET Core 2.1 / ASP.NET Core 2.1 Preview 1 の気になった部分だけ試した

先月頭にロードマップが公開されていた .NET Core 2.1 ですが、もろもろ関連するもの全てが Preview 1 という形でリリースされました。ASP.NET Core 2.1 も Preview 1 となりましたが、今回は SignalR が入ったりと更新が多いですね。HttpClientFactory とか…

ASP.NET Core 2.1 と ANCM In-Process Hosting の話

スケジュールが遅れていた気がする .NET Core 2.1 / ASP.NET Core 2.1 ですが、Scott Hunter が Channel 9 の動画付きでブログを公開してました。昔は ASP.NET の担当だった気がしましたが、今は .NET 全体の Director だったのですね。People have been ask…

ASP.NET Core で Azure AD B2C を使った際に謎のエラーが多発する問題

ASP.NET Core の OpenID Connect Middleware を使って Azure AD B2C なログインを GitHub で公開されているサンプルとほぼ同じように実装したら、よくわからないエラーが多発して困ったという話です。実際に Application Insights からデータを引っ張ってき…

ASP.NET Core で Open Redirect 攻撃を避けるために LocalRedirect / IsLocalUrl を使う

ちょっと前に ASP.NET Core で Open Redirect の脆弱性が見つかって修正したという話が出てました。歴史的に ASP.NET は Open Redirect の脆弱性が多い気もしますが、デフォルトの挙動が ReturnUrl を受け取り、それを使うという形なので注意したい部分では…

Nano Server で ASP.NET Core アプリケーションを実行する

これまでに ASP.NET Core は大体 App Service か Linux の Docker でしか動かしておらず、Nano Server を使ったことがなかったので試しておくことにしました。といっても、難しいことはなく Visual Studio で ASP.NET Core プロジェクトを作る時に Windows …

ASP.NET Core から SendGrid の Template Engine を使ってメールを送信する

最近は仕事で ASP.NET Core MVC を使ったアプリケーションを書いてきて、メール送信が必要になったので SendGrid を例によって使うわけですが、今回は Template Engine を使って送信することにしました。使うために調べは済んでましたが、これまでに仕事で使…

Azure AD B2C を ASP.NET Core で使うと頻繁にログアウトするのを直す

Azure AD B2C を使ってログイン処理を実装した ASP.NET Core なアプリケーションが、何故か頻繁にログアウトしてしまうので調べてました。これもまた地味にはまったポイントです。とりあえず OpenIdConnect な Middleware のコードを読んで調べました。AAD B…

ASP.NET Core で静的コンテンツのキャッシュを適切に行う

ASP.NET Core で静的コンテンツを配信する時に、デフォルトだと挙動が厄介なので設定を変更した方が効率的という話です。地味にはまったのでメモとして残します。 TL;DR Static Files Middleware で Cache-Control を付ける 更新されるファイルには asp-appe…

ASP.NET Core MVC を使ってドロップダウンリストをいい感じに実装する

大昔に書いた ASP.NET MVC 3 向けの内容を Core MVC 向けにします。と言ってもほぼ別物になってますが、基本的な考え方は SelectListItem 側に寄せる、なのでいい感じに扱えるようにしてみます。Core MVC では Razor が超進化しているので、DI や Tag Helper…

Visual Studio Team Services と Web App for Container を使用した ASP.NET Core アプリケーションの CI/CD

最近は仕事で Visual Studio Team Services と Web App for Container を使っていましたが、地味にデプロイ周りで苦労をしたので軽くまとめておきます。デプロイだけでは面白くないので、ASP.NET Core アプリケーションのビルドから行ってみます。Web App fo…

OpenID Connect に対応した LINE Login を ASP.NET Core 2.0 からお手軽に使ってみる

LINE のイベントで LINE Login が OpenID Connect に対応したという発表があったようです。昔に比べると、簡単に LINE Login の設定が出来るようになっているので、今後は色々な部分での採用が広がりそうな気もします。OpenID Connect 対応は特に重要なアッ…

ASP.NET Core MVC を使ってアプリケーションを書いた際に悩んだポイント

サンプルとか超小規模以外の ASP.NET Core MVC アプリケーションを書いてますが、いろいろと悩んだりはまったりしたポイントがあったのでまとめました。まだまだありそうなので、ちょっとずつまとめようかと思います。 addTagHelper にはアセンブリ名を指定…

Visual Studio 2017 Update 3 (15.3) と ASP.NET Core 2.0 などがやっとリリース

いつまで時間がかかるのかと思うぐらい Visual Studio 2017 Update 3 のリリースに時間がかかっていましたが、ようやく正式版がリリースされたようです。更新内容はこれまでで一番多い気がします。そしてアップデートは必須ですね。注意点としてはアップデー…

ASP.NET Core MVC の Tag Helpers でフォームを作成する時の個人的なまとめ

何だかんだで一番苦労するのがフォームを作成する時なので、後から見て思い出せるように Tag Helpers を使って書く時の基本的なメモをまとめておきます。ASP.NET Core MVC 2.0 以降は Razor がアップデートされて変わりそうですが、とりあえず 1.1 対象で。 …

ASP.NET Core MVC の Razor で使える Tag Helpers のメモ書き

ちょっと真面目に ASP.NET Core MVC の Razor を書いている時に、そういえば Tag Helpers の書き方をあまり勉強していなかったと気が付いたので、これを気に個人的によく使いそうな部分だけメモります。例によってドキュメントがちゃんと用意されているので…

ASP.NET Core MVC の Areas と URL ルーティングの話

そろそろ ASP.NET Core MVC を本格的に使っていこうかと思っているので、これまで ASP.NET MVC 5 でよく使っていた Area を実際に Core MVC で使ってみることにします。とは言っても、公式のドキュメントに書いてあることで十分ですが、URL ルーティングとの…

クラスタ不要で柔軟な Docker ホスティングが行える Hyper.sh を試してみた

Hyper.sh - Clusterless Docker Hosting Hyper.sh の特徴とメリット 個人的にはクラスタ不要で Docker が使えるというだけでかなりのメリットになるのですが、それ以外にもいろいろと特徴とメリットがあったので少しだけ書いておきます。 Docker と同じコマ…