しばやん雑記

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

ASP.NET Core

ASP.NET Core Identity に Windows Hello を使ったログイン機能を追加する

Windows Hello というか Web Authentication API を使って、簡単にサービスにログイン出来るようになって欲しいので、GitHub に ASP.NET Core Identity を使ったデモアプリケーションを公開しました。動かしながら仕組みを理解した方が良いと思いました。デ…

Docker Compose と Kudu を使って ConoHa 上に ASP.NET Core のデプロイ環境を作ってみた

App Service on Linux 向けとしてですが、Kudu の Mono 対応が進んでいたので Azure 以外の Linux 環境でも動くのではないかと思ったので、手軽な ConoHa を使って試してみました。そしてついでなので、ASP.NET Core アプリケーションをデプロイするところま…

Elastic Beanstalk を使って ASP.NET Core アプリケーションを実行する 2 つの方法を試した

最近は自分の中で ASP.NET Core への興味が高まってきてるので、実行環境をいつもの Azure ではなく今回は AWS の Elastic Beanstalk を使ってみることにします。タイトルに 2 つの方法と書いた通り、Windows Server 2012 R2 と Amazon Linux 上の Docker の…

ASP.NET Core MVC アプリケーションでスキャフォールディングが使えない時は

サンプルではなく、実際に ASP.NET Core MVC アプリケーションを開発する人が選ぶと思われる認証なしテンプレートでは、Visual Studio でのスキャフォールディングに必要なパッケージが追加されません。私は基本的に認証なしを選んで作っていくタイプなので…

ASP.NET Core MVC で大きく変わったフィルタについて調べた

仙台に行ったとき、ぼんぷろおじさんに ActionFilter で実行時にオプションを扱う場合にどうすればいいのか聞かれて、フィルタ周りまとめないといけないことを思い出したので書きます。思いのほか長くなってしまったので、久し振りに目次記法を使うことにし…

開発環境でも ASP.NET Core MVC の RequireHttps 属性を使えるようにする

ASP.NET MVC の RequireHttps 属性を使うと、HTTP で来た場合には HTTPS にリダイレクトしてくれるのですが、開発環境で 443 以外のポートを使っている場合、正しく動作しないという欠点がありました。 [RequireHttps] public ActionResult Index() { return…

ASP.NET Core MVC の Content Negotiation を活用する

ASP.NET Web API 2 でも Content Negotiation は実装されていましたが、Core MVC では進化してさらに便利な機能が追加されていたので、簡単にですが調べてみました。Formatting Response Data — ASP.NET documentationドキュメントも割と揃ってきているので…

ASP.NET MVC アプリケーションを ASP.NET Core MVC にマイグレーションしようとして挫折した話

これは既に本番環境で動作している ASP.NET MVC アプリケーションを、軽い気持ちで ASP.NET Core MVC にマイグレーションしようとした考えが甘い男の、真実の物語である。ネタ記事っぽいですが、割と真面目にマイグレーションしようとして、余りにも辛くなっ…

既存の ASP.NET Web API アプリケーションを ASP.NET Core MVC 1.0 へマイグレーションしてみた

.NET Core 1.0 と ASP.NET Core 1.0 が RTM したので、とりあえず簡単なものからマイグレーションしてみました。ターゲットは無職になる前に作ったこれです。時間を持て余した感あるので、俺得 API 作ってた https://t.co/9ag1MfPiGU— しばやん (@shibayan) …

.NET Core / ASP.NET Core 1.0 が RTM になりました

Red Hat DevNation 2016 で .NET Core 1.0 の RTM が発表されるはずですが、一足お先に SDK などが RTM になっていたのでインストールしました。詳しいことは @kosmosebi や @ufcpp が書いてくれます。.NET のページから Preview の文字が消えて、各プラット…

Road to RTM - ASP.NET Core に至るまでの迷走の歴史

6/29 に .NET Core / ASP.NET Core 1.0 の RTM が決まって嬉しいので、これまで ASP.NET Core がどのような道を辿ってきたのかを、つらつらと書いてみたいと思ったので書きます。要するにネタ記事です。ネタ記事なので「ああ、こういうこともあったなぁ(白…

.NET Core / ASP.NET Core 1.0 が 6/27 に RTM となるらしい

戦車道で人生の大切なことを学んでいる間に dotnetConf 2016 のキーノートが始まっていました。単純に忘れていたので、ストリーミングを見返しながらぶちぞうメソッドでブログを書いてみます。キーノートのスピーカーは Scott Hunter です。最初は .NET 周り…

ASP.NET Core 1.0 に組み込まれたロギングフレームワーク

ASP.NET Core 1.0 はフレームワークの足回りのアップデートが大量に行われています。その中でもロギングフレームワークが標準で提供されているのは、割と重要な点だと思います。Logging — ASP.NET documentation公式ドキュメントのファンダメンタルズ以下に…

ASP.NET Core 1.0 でオプションを柔軟に扱えるようになった話

ASP.NET というか .NET Framework は System.Configuration を使って、アプリケーションの設定読み込みを実装するか、完全に自前で XML などを読み込む処理を作っていたかと思いますが、ASP.NET Core ではフレームワークとして用意されました。Configuration…

ASP.NET Core MVC 1.0 で新しくなった URL ルーティング

地味ですが ASP.NET Core MVC 1.0 では URL ルーティングの仕組みが大きく変わりました。今までは ASP.NET のルーティングモジュールを使っていましたが、ASP.NET Core 1.0 では新規にミドルウェアとして実装されました。少し挙動が変わっていて、新しい機能…

ASP.NET Core MVC 1.0 で追加された View Components を使ってみる

ASP.NET Core MVC 1.0 に追加された機能の中で 1,2 を争うぐらい個人的には気に入ってるのが View Components です。ざっくりと説明すると Razor の中だけで使える Controller/Action です。MVC 5 までは Html.Action/RenderAction を使って呼び出せる、子ア…

ASP.NET Core MVC 1.0 でキャッシュを行う 3 つの方法

ASP.NET MVC 5 でもキャッシュのための手段はいくつか用意されていましたが、ASP.NET Core MVC 1.0 では少し方向性が変わっています。大きく変わっているのが OutputCache 属性が無くなっていることです。現実的にキャッシュを行う手段は ASP.NET Core MVC 1…

Azure Web Apps に ASP.NET Core 1.0 アプリケーションをデプロイする

昨日あたりに Azure Web Apps にも .NET Core 1.0 RC 2 がインストールされたみたいなので、ASP.NET Core 1.0 アプリケーションをデプロイして動かすことが出来るようになりました。今のところは 32bit ランタイムだけがインストールされているみたいです。…

ASP.NET Core 1.0 で追加された User Secrets を使ってみる

これまでは開発環境用の接続情報など GitHub などのリポジトリに含めたくない情報は、Web.config の configSource を使って別ファイルにして管理していたかもしれません。ASP.NET Core 1.0 には User Secrets が追加されたので、ユーザー専用の情報を簡単に…

ASP.NET Core 1.0 の Dependency Injection を使って Azure Storage を使いやすくする

Azure を使った開発では欠かせないのが Storage ですが、最新の Azure Storage Client 7.0.1-preivew からは .NET Core に対応しているので、ASP.NET Core アプリに簡単に組み込めます。これまでと変わらずに NuGet を使ってインストールするだけで準備は完…

ASP.NET Core MVC 1.0 で Cookie を使ったユーザー認証を独自に実装する

ASP.NET MVC 5 までは FormsAuthentication を使って実装していた部分を、ASP.NET Core MVC 1.0 でも同じように独自で実装したいときにどうすればいいのか調べました。公式のサンプルは Identity を使っていますが、ドキュメントに Identity を使わない方法…

ASP.NET Core 1.0 の Startup クラス定義の基本と Dependency Injection の話

ASP.NET Core では Startup クラスを用意して、その中でアプリケーションの設定を行うようになっています。OWIN でも存在していた Startup クラスですが、ASP.NET Core では大きく変化しています。大きく変化しているのですが、それぞれのメソッドで役割が綺…

ASP.NET Core 1.0 のプロジェクト構造とエントリポイントの話

ASP.NET Core 1.0 でアプリケーションを書く前に、どのような構造になっているのか知っておいた方がいいと思ったので、さらっと調べました。RC 2 でいろいろ変わっているので調べなおしという感じです。Visual Studio を使って最低限の ASP.NET Core MVC 1.0…

.NET Core 1.0 / ASP.NET Core 1.0 の RC 2 と Visual Studio 2015 Tooling Preview 1 がリリースされました

時間がかかったようですが、ついに .NET Core 1.0 と ASP.NET Core 1.0 の RC 2 がリリースされました。Announcing ASP.NET Core RC2 | .NET Web Development and Tools BlogRC 2 公開に伴い .NET のページが新しく用意されたみたいですね。ちゃんと .NET Co…

ASP.NET Core が HttpPlatformHandler から専用の IIS モジュールに移行する理由

ASP.NET Core は元々 Helios で動かす予定だったのが、サーバーが Kestrel への 1 本化に伴い IIS 向けには HttpPlatformHandler が採用されてきましたが、少し前に HttpPlatformHandler から fork した ASP.NET Core Module が使われることになりました。公…

Build 2016 で発表された ASP.NET Core セッションについて

RC 2 が出なかったことで、いまいち盛り上がらなかった Build 2016 の ASP.NET Core 周りですが、セッションは普通に面白いので簡単にまとめておきます。ちなみに RC 2 のリリース時期は未だに TBD のままです。 Introducing ASP.NET Core 1.0 いつもの Scot…

ASP.NET 5 から ASP.NET Core 1.0 に変更になります

朝起きたら、ASP.NET 5 の名称変更を Scott Hanselman が衝撃的なタイトルのブログで発表していました。新しい名前は ASP.NET Core 1.0 になるようです。BLOG: @AspNet 5 is dead: Introducing @AspNet Core 1.0 and @dotnet Core 1.0 https://t.co/X7LiOr6E…

Connect(); // 2015 でリリースされた DNX と .NET Core / CLI について調べた

Connect(); // 2015 では ASP.NET 5 (DNX) や .NET Core の RC 1 が出たので、自分なりに整理するために色々と調べて OS X 上で実際に試してみました。RC 1 ではちゃんとインストーラーやドキュメントが用意されているので簡単です。 DNX / ASP.NET 5 http:/…

ASP.NET 5 のサーバーから IIS (Helios) が削除された理由

ASP.NET 5 beta8 のリリース前に、割と大きな変更が入りました。IIS (Helios) の削除です。ちゃんと削除する理由が挙げられているので、適当に意訳して紹介します。 Helios 自体が DNX の役割を担ってしまっている WebListener や Kestrel などと異なり、Hos…

Raspberry Pi 2 にインストールした Windows 10 IoT Core 上で DNX と ASP.NET 5 アプリケーションを動かしてみた

ちょっと前に Raspberry Pi 2 の Windows 10 IoT Core で DNX を動かしたという話を Twitter で見たので、実際に自分でも動かすことが可能なのか試してみました。てっきり Mono を使ったのかと思いましたが、1.0.0-beta6 からは DNX の Windows CoreCLR 向け…

DNX と ASP.NET 5 が 1.0.0-beta6 に到達

そろそろ beta6 か rc1 になるのではと思ってましたが、最新のビルドで beta6 になりました。まだ GitHub 上で Tag は打たれていないようです。alpha は 4 までだったので、ちょっと beta が長い感じがします。 インストールなど 各 OS 向けにビルドが公開さ…

Linux / OS X 向け DNX で CoreCLR が使えるようになった話

今月頭に Linux / OS X への対応が Twitter で発表されていた DNX ですが、最新の Nightly Build をインストールすることで、実際に使えるようになりました。Thanks to @ellism, we have dnx running on OSX and linux on top of CoreCLR! #dnx #aspnet5 pic…

.NET Core Runtime (CoreCLR) / .NET Compiler Platform (Roslyn) / .NET Execution Environment (DNX) の役割について理解したい

自分でも最近の .NET Core 5 周りで混乱してきたので、整理するために簡単にまとめました。略称も色々なので、そのあたりと役割も一緒に分かってる範囲で書きます。 .NET Core Runtime (CoreCLR) GitHub でオープンソースになると話題になった部分で、RyuJIT…

KRuntime (KRE / XRE) が .NET Execution Environment (DNX) に名前が変わった話

これまでは KRuntime とか XRE と呼ばれていた部分が、数日前に .NET Execution Environment (DNX) と名称変更されました。理由は良く分かっていません。ちなみに名称変更が行われたコミットログは以下の通り。 DNX ALL THE THINGS · aspnet/dnx@ea2880a · G…

Raspberry Pi 2 を買ったので Mono 3.12.0 を自前でビルドして ASP.NET 5 を動かしてみた

今後は Windows 10 for IoT が無償提供されるという話もあり、ハードウェア周りをちょっと触ってみたかったので Raspberry Pi 2 を Pimoroni で買ってみました。Raspberry Pi 2 with Pibow Case - PimoroniRaspberry Pi 2 本体とケースで £42 ですが、これに…

ASP.NET 5 の Nightly バージョンをインストールする方法

ASP.NET 5 は現在 1.0.0-beta2 が公開されていますが、現在 dev branch では既に 1.0.0-beta3 になっているのでインストールしてみました。NuGet では公開されていないので Nightly 専用の MyGet からダウンロードする必要があります。なので KRE_FEED 環境…

ASP.NET 5 アプリケーションのプリコンパイルと kpm pack のオプションについて調べた

ASP.NET 5 アプリケーションが Kudu によってどのようにデプロイされるのか調べた - しばやん雑記 を書いた時、Visual Studio の発行ダイアログにプリコンパイルオプションがあるのを見つけました。プリコンパイル出来るのであれば、Roslyn のコンパイル速度…

ASP.NET 5 アプリケーションが Kudu によってどのようにデプロイされるのか調べた

Azure 界の抱かれたい男 No.1 こと @kosmosebi に「ASP.NET 5 を Websites で動かす方法を調べやがれ」と言われたので、Azure 界で生きていくために頑張って調べました。@shibayan いまいちどういう仕組みで動いてるのか謎いしばやんが調べるべき— こすもす.…

ASP.NET 5 と Visual Studio 2015 では Bower と Grunt が標準になるみたいなので勉強してみた

ASP.NET 5 と Visual Studio 2015 Preview では Bower と Grunt、そして npm へ標準で対応するようになりました。今後は ASP.NET 5 開発で必要となってくる知識になるので、簡単に調べてみました。既に ASP.NET 公式サイトでは Visual Studio 2015 で Bower …

ASP.NET MVC 6 の概要だけをサクッとまとめておきたい

あまりにも MVC 6 は変更が多いので、概要をとりあえずサクッとまとめておきたい(ASP.NET 5 が RTM になるまでは、あまり確定情報みたいに書かないようにしているので、これもソースコード読みつつ調べた自分用メモだと思ってください。*1Release 6.0.0-bet…

Connect(); での発表と ASP.NET の今後について

やっと Connect(); で発表された中身について触れる余裕が出来てきたので、個人的な考えも入れつつまとめておこうと思います。ちょいちょい追記するかも。まずはキーノートでてんこ盛りのデモをしていた Scott Hanselman が既にブログでいろいろまとめてくれ…

ASP.NET vNext で用意されている 3 種類のサーバー

ASP.NET vNext はこれまで使われてきた System.Web.dll を捨てた結果、ランタイムとして IIS や ISAPI に依存しなくなりました。その代わり HTTP の処理を実際に行うレイヤーが必要となります。既に http.sys を利用したものや、Node.js でも使われている li…

ASP.NET vNext で追加された新しい HTTP 抽象化クラス

ASP.NET vNext ではこれまで System.Web.dll で提供されていた、古く巨大になった HttpContext などを捨てて、新しい軽量かつモジュラーな HTTP 抽象化クラスを提供しています。aspnet/HttpAbstractions: HTTP abstractions such as HttpRequest, HttpRespon…

ASP.NET vNext で使われている Assembly Neutral Interfaces について

ASP.NET vNext では新しく Assembly Neutral Interfaces という、Roslyn を利用したアセンブリから中立なインターフェースが多く使われるようになりました。アセンブリ中立なインターフェースって何だ?という感じですが、これが結構面白い仕組みで実現され…

Visual Studio "14" CTP 4 での ASP.NET vNext の変更点

Visual Studio "14" CTP 4 が公開されたので、ASP.NET vNext 周りの変更点を確認しておきます。ASP.NET vNext in Visual Studio “14” CTP 4 - .NET Web Development and Tools Blog - Site Home - MSDN Blogsざっくりと訳しておきます。 フレームワーク名の…

Visual Studio "14" CTP がリリースされたので ASP.NET vNext アプリを Azure Web サイトにデプロイして Monaco で編集してみた

今朝 TL を賑わしていましたが、Visual Studio "14" CTP がリリースされました。Somasegar ブログで全体的な新機能について紹介されているので読んでおくべきです。Visual Studio "14" CTP - Somasegar's blog - Site Home - MSDN Blogs.NET Web Development…

ASP.NET vNext(MVC / Web API / Web Pages 6, Entity Framework 7, SignalR 3)が TechEd NA で発表された話

開発者向けと銘打った Build 2014 では大した情報が出てこなかったのに、TechEd North America 2014 でどう考えても開発者向けとしか思えない情報がたくさん出てくる現象に名前を付けたい。1 日目のキーノートでは Azure 周りに大量のアップデートが入り、No…