読者です 読者をやめる 読者になる 読者になる

しばやん雑記

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

ASP.NET

ASP.NET の App Settings と Connection Strings の値を環境変数からオーバーライド可能にする

App Service は Azure Portal から設定した App Settings と Connection Strings の値を、いい感じにオーバーライドしてくれるのが非常に便利だったので、同じように環境変数からオーバーライド出来るようにするライブラリを書きました。主に Docker 向けと…

AppVeyor を使って ASP.NET MVC アプリケーションの Docker Image を自動で作成してみる

前に AppVeyor の Windows Server 2016 と Docker 対応について調べたので、今回は実際に ASP.NET MVC アプリケーションをビルドして、Docker Image の作成までを行ってみます。やることは CircleCI と Docker を使って App Service on Linux への CI/CD を…

Docker Compose を使って DB 付きの ASP.NET アプリケーションを実行する

ASP.NET MVC アプリケーションは microsoft/aspnet イメージを使うことで簡単に Windows Containers で動作しましたが、実際のアプリケーションには大抵 DB がセットなので、DB を含めた形でアプリケーションを Docker で動かしてみました。SQL Server 2016 …

Windows Containers を使って既存の ASP.NET MVC アプリケーションを動かす

Azure App Service の Linux 版が Docker に対応したり、Azure Container Registry がプレビューになったりと、Docker と Container に対応しておくと色々幸せになれそうなので、既存の ASP.NET アプリケーションに絞って調べることにしました。Azure Contai…

Windows Server 2016 の Windows Containers と Docker を使って IIS と ASP.NET を動かしてみた

Windows Server 2016 が MSDN からダウンロード出来るようになっていたので、Service Fabric Cluster 用に買った Intel NUC にインストールしてみました。Hyper-V 上に入れた 2016 で Windows Containers を試したとき、1 日経ってもコンテナが起動しなかっ…

ASP.NET MVC で reCAPTCHA を使ってみた

今更感が半端ないですが、ASP.NET MVC で開発したアプリケーションに reCAPTCHA の version 2 を組み込む方法を調べました。何番煎じか分かりませんが、小ネタ程度にまとめておきます。reCAPTCHA を使うためには Google のサイトから URL を登録して、トーク…

FatAntelope を使って XML Document Transform (XDT) を自動で生成する

主に ASP.NET アプリケーションの Web.config 変換で使われている XML Document Transform (XDT) ですが、個人的にはあれを手書きするのはかなり嫌いでした。XML の差分を持っているだけなので、自動生成できるのではないかと長い間思ってましたが、最近 Fat…

ASP.NET MVC 5 アプリケーションを .NET Framework 4.6 と C# 6.0 にアップデートしてみた

リリースされたばかりの .NET Framework 4.6 が Azure Web Apps で使えるようになったらしいので、動かしていた ASP.NET MVC 5 なアプリケーションを ASP.NET 4.6 と C# 6.0 にアップデートしてみました。8 月中にリリースという話でしたが、思ったよりも早…

ASP.NET アプリケーションを Azure Web Apps にソース管理からデプロイする時にプリコンパイルさせる方法

Azure Web Apps に ASP.NET アプリケーションを GitHub などからデプロイする場合に、ビューのプリコンパイルを行いたいと思っていましたが、カスタムデプロイスクリプトを書くことで対応できたので紹介します。やはり同じことを考える人は居たようですが、…

インストール時に MachineKey を自動生成する NuGet パッケージを作った

大昔に紹介した MachineKey をオンラインで生成できるサイトが、いつの間にかドメインごと消滅していてとても不便だったので、代わりになるものとして MachineKey を自動的に生成し、Web.config に設定まで行う NuGet パッケージを作りました。MachineKeyGen…

ASP.NET MVC の Display Mode を使っている場合には Vary HTTP ヘッダーを出力するべきだった

ASP.NET MVC の Display Mode を使えば、ビューを用意するだけで PC 版とスマートフォン版のページを同じ URL で公開することができます。既に何回か紹介しているので、Display Mode については以下の記事を参考にしてください。ASP.NET MVC 4 で理想的なス…

ASP.NET MVC 5 アプリケーションの開発を始める時のテンプレート的なものを作った話

昔 ASP.NET MVC 5 で開発を始める上で、自分が定型的に追加している設定をまとめた記事を書きました。ASP.NET MVC 5 での新規アプリケーション開発時に便利な設定をまとめてみた - しばやん雑記完全に自分用として書いた記事なので、頻繁に読むようになって…

ASP.NET の HTTP エラー画面の表示処理を IIS 側に統一する

以前に ASP.NET の customErrors と IIS の httpErrors の違いについて書きました。ASP.NET と IIS の HTTP エラー処理を理解する - しばやん雑記結局、この時には customErrors と httpErrors の両方を Web.config に追加するという結論に達しましたが、や…

ASP.NET MVC で HTTP 401 を返した時にログインページへリダイレクトさせない方法

割と有名な ASP.NET のフォーム認証モジュールのおせっかい機能として、HTTP ステータスコードで 401 を返すと自動的にログインページへの 302 リダイレクトに変換するというのがあります。認証が必要な Web サイトを作る場合には割と便利なんですが、API を…

なぞなぞ認証を ASP.NET MVC で実装して遊んでみた

特に意味はないのですが、はてなの各サービスで使えるようになっているなぞなぞ認証を、ASP.NET MVC の機能を使って実装してみました。なぞなぞ認証の詳細ははてなキーワードを見てください。なぞなぞ認証単純になぞなぞに回答して、それが正解であればペー…

IIS 10.0 と ASP.NET 4.6 で HTTP/2 のサーバープッシュが使えるようになっていたので試した

IIS 10.0 で HTTP/2 のサーバープッシュに対応しているか分からないと書きましたが、実際には ASP.NET からサーバープッシュを簡単に行えるようになっていました。Windows Server Technical Preview 2 がリリースされたので IIS 10.0 について調べた - しば…

ASP.NET Web API を使って画像を Motion JPEG で配信する

Raspberry Pi 2 が Azure Blob に保存した画像を Motion JPEG として配信してみたくなったので、まずはローカルに保存している画像を Motion JPEG として返す Web API を作って試してみました。Motion JPEG - WikipediaH.264 で圧縮しても良い気がしますが、…

ASP.NET Web API でバージョニングを実現する方法を調べた

一般的に Web API のバージョニングを実現する方法として、URL にバージョンを含める方法とクエリパラメータや HTTP ヘッダーでバージョンを指定する方法の 2 種類が使われています。例を挙げると Twitter や Instagram の API は URL でバージョンを指定し…

ASP.NET Web API でアップロードされたファイルを扱う方法を知らなかったので調べた

ASP.NET MVC でファイルアップロードを実装する場合は、モデルバインダが HttpPostedFileBase クラスなどに自動的にバインドしてくれていましたが、Web API だとそこまで面倒は見てくれないみたいです。これまで Web API での実装方法を知らなかったですが、…

SendGrid の Inbound Parse Webhook を ASP.NET MVC から簡単に使うためのヘルパーを作った

以前に SendGrid の Parse API を使ってメールの受信をフックする - しばやん雑記 で使ったことがある SendGrid の Inbound Parse Webhook は、簡単にメールの受信が出来てとても便利なのですが、送信されるパラメータが多く、部分的に JSON だったりもする…

ASP.NET の Response.Cookies を弄ると空のクッキーが生成されて困った話

ASP.NET で Response.Cookies にとある名前のクッキーが既に入っているかをチェックするコードを書いたところ、空っぽのセッションクッキーが作られることに気が付きました。例を挙げると以下のようなコードを書いた時です。 public partial class Default :…

ASP.NET MVC で任意のタイミングでモデルの検証を行う方法

MVC 5 でウィザード的に 1 ページごとに項目を入れていくページを作っていると、実際に DB に格納する前にセッションに入れておいたモデルの状態が正しいか調べたくなりました。てっきり「あー、UpdateModel / TryUpdateMode の中身参考にしないといけないの…

ASP.NET MVC の RequireHttps 属性は GET 以外の場合には例外を投げるので注意

タイトルの通りですが、ASP.NET MVC を使って SSL が必須のページを実装するのには RequireHttps 属性が便利ですね。しかし、この属性は GET 以外のリクエストが来ると無条件で例外を投げるようになってます。例えば HEAD リクエストを投げてみると 500 が返…

Azure Web サイトに追加されている ASP.NET の設定について

Azure Web サイトの App Settings にはデフォルトで以下のような設定が追加されています。aspnet:PortableCompilationOutput と aspnet:DisableFcnDaclRead という設定は名前から ASP.NET に関係する設定ということは分かりますが、これまでに見たことが無か…

Azure と ASP.NET に関係する SSL 3.0 の脆弱性への注意点

SSL 3.0 の脆弱性に関して何回か取り上げてきましたので、最後に Azure と ASP.NET に関係がある部分での注意点についてまとめておきます。 Azure CDN Azure の CDN は SSL 3.0 が既に無効化されていました。これにより CSS や画像などのリソースが読み込め…

ASP.NET MVC の XSS 脆弱性 CVE-2014-4075 について調べた

昨日は SSL 3.0 の脆弱性以外に ASP.NET MVC の脆弱性に関しても情報が公開された日でした。2014 年 10 月のセキュリティ情報 (月例) - MS14-056 ~ MS14-063 - 日本のセキュリティチーム - Site Home - TechNet Blogs MS14-059: Description of the securit…

Windows Server Technical Preview の IIS というか http.sys が HTTP/2 に対応していたらしい

Windows Server Technical Preview には正直あまり興味が無かったんですが、今日に IIS でも HTTP/2 が使えたという話が Twitter で流れてきたので早速 Azure の仮想マシンに入れて試しました。IISもHTTP2喋るぞ!! pic.twitter.com/keYrGk0baj— ゆき (@fla…

ASP.NET 4.5.2 で追加されたバックグラウンド処理 API を使って待つ必要のない非同期処理を丸投げする

.NET Framework 4.5.2 向けのアプリケーションで Google API クライアント周りがコンパイルエラーになって調べていたときに、そういえば ASP.NET に API が追加されたことを思い出したので調べてみました。ちなみに .NET Framework 4.5.2 で追加された ASP.N…

ASP.NET MVC 5.2.2 / Web API 2.2.2 / Web Pages 3.2.2 がリリースされました

先月の終わりに ASP.NET MVC / Web API / Web Pages がアップデートされていました。NuGet Gallery | Microsoft ASP.NET MVC 5.2.2 NuGet Gallery | Microsoft ASP.NET Web API 2.2 5.2.2 NuGet Gallery | Microsoft ASP.NET Web Pages 3.2.2リリースノート…

ASP.NET MVC 5 で追加された属性ベースのルーティングを使ってモデルバインダ絡みのエラーを回避する

ASP.NET MVC を利用した開発を行っている人は、下のエラー画面を 1 度は見たことがあるかと思います。MVC では URL ルーティングで定義されたパラメータやクエリ文字列を、モデルバインダが適切な型へ変換してアクションの引数へバインドする仕組みになって…

ASP.NET MVC 5.2 で Facebook アプリテンプレートが使えない問題と対応法

Visual Studio 2013 Update 1 でも ASP.NET プロジェクトを作成する時に、Facebook を選択すると Facebook アプリのテンプレートが作られます。しかし、このテンプレートに対して MVC 5.2 などにアップデートしようとすると、Microsoft.AspNet.Mvc.Facebook …

ASP.NET Web Pages 3.2.1 のベータ版がリリースされました

最近は ASP.NET MVC 5.2 / Web API 2.2 / Web Pages 3.2 がリリースされました - しばやん雑記 でも書いたように Web Pages の更新がほぼ無いので、このまま vNext に進むのかと思っていたら 3.2.1 のベータで久しぶりに大きなアップデートが行われたみたい…

ASP.NET と IIS の HTTP エラー処理を理解する

以下のような ASP.NET アプリケーションのエラー画面を見たことない人は、ASP.NET 開発者にはいないと思います。この画面を本番環境では出すわけに行かないので普通はカスタマイズしますよね。しかし、ASP.NET では 404 をアプリケーション的に返しているの…

ASP.NET MVC 5.2 / Web API 2.2 / Web Pages 3.2 がリリースされました

個人的には ASP.NET vNext のほうが気になって仕方ないですが、ひっそりと ASP.NET MVC 5.2 や Web API 2.2 がリリースされてました。NuGet Gallery | Microsoft ASP.NET MVC 5.2.0 NuGet Gallery | Microsoft ASP.NET Web API 2.2 5.2.0 NuGet Gallery | Mi…

Knockout.js と ASP.NET MVC の組み合わせ時にモデルバインディングが腐る件

今日も Knockout.js を使って ASP.NET MVC に POST するようなコードを書いていたのですが、モデルバインダが意図したとおりに値をバインドしてくれない時がありました。まずは ASP.NET MVC 側のコードを見ていきましょう。難しいことはしてません。 public …

ASP.NET MVC でページャーやパンくずリストを作るときには部分ビューなどを使うと便利

Twitter で酢酸先生が ASP.NET MVC でのビューの使い回しについて悩んでいたので、久しぶりに ASP.NET についてブログを書きます。しばやんサイトに無限クロールして地獄を味合わせるか…。あ、asp,net mvcで複数のページの任意の場所にカスタムコントロール…

ASP.NET MVC 5.1.2、Katana 3.0.0-beta1、Helios 1.0.0-alpha1 などがリリースされていました

タイトルからわかるように過去形です。気が付いていたけど書いていなかった、もしくは完全に気が付いていなかった内容が含まれています。Microsoft Azure が楽しすぎるのが悪いということにしてください。それではまとめます。 ASP.NET MVC 5.1.2 / Web Page…

Build 2014 と Windows Azure SDK 2.3 の話

Build 2014 の 2 日目が Azure の日だったので @kamebuchi こと抱かれたい男 No.1 がいつも通りまとめてくれています。概要をサクッと知りたい場合はこれで問題無いでしょう。//build/ 2014 Day 2 Keynote (Azure成分多め) « ブチザッキ既に Channel 9 では…

ASP.NET 関係で最近アップデートが行われたパッケージまとめ

最近は Windows Azure Web サイトばかり弄っていたので ASP.NET 周りが疎かになってました。先日 ASP.NET MVC のマイナーアップデートが行われていたことに気が付かなかったのがショックだったので、関係しそうなパッケージのアップデートをまとめてみます。…

ASP.NET MVC 5 での新規アプリケーション開発時に便利な設定をまとめてみた

自分が毎回新規で ASP.NET MVC アプリケーションの開発を始めるときに忘れるので、今までブログに書いた分をまとめてみました。ASP.NET MVC 5 と限定してあるのは、5 より前のバージョンではバグ持ちの設定を紹介しているからです。 Razor のみを使う ViewEn…

ASP.NET MVC 5.1 や Web API 2.1 がリリースされました

そのままですが、ASP.NET MVC 5.1 や Web API 2.1 が正式リリースとなりました。Announcing the Release of ASP.NET MVC 5.1, ASP.NET Web API 2.1 and ASP.NET Web Pages 3.1 - .NET Web Development and Tools Blog - Site Home - MSDN BlogsVisual Studio…

ASP.NET MVC で条件付きの検証を行う属性とモデルバインダを実装してみた

昔から ASP.NET MVC の検証を条件付きで実行したいと思っていた人生でした。言葉で説明すると分かりにくいので、ヨドバシのオンラインショップのフォームがサンプルとして都合良かったので拾ってきました。このフォームの場合、チェックの有無で検証の有無も…

ASP.NET 開発者以外にもおススメしたい Microsoft Ajax CDN

Microsoft は Windows Azure などで利用するために、日本国内に CDN のエッジサーバを用意しています。その CDN エッジサーバを利用して jQuery などの有名な JavaScript ライブラリを配信する、Microsoft Ajax CDN というサービスを提供しています。Microso…

Sitecore と ASP.NET MVC 間でデバイスクッキーを連携させてみた

これは Sitecore Advent Calendar 2013 - Adventar の 12 日目の記事です。以前に Sitecore と ASP.NET MVC のハイブリッドなサービスの開発をお手伝いした時に、どうしても Sitecore のデバイスクッキーを ASP.NET MVC と共有化させる必要がありました。デ…

ASP.NET MVC 5.1 や Web API 2.1 のリリース候補版が公開されました

今朝、ASP.NET チームのお偉いさんである Scott Hunter が ASP.NET MVC 5.1 / Web API 2.1 / Web Pages 3.1 のリリース候補版を公開したとツイートしていたので、ちょっと内容を書いてみようと思います。公式のブログでもしっかりと新機能の説明がされている…

ASP.NET でタブレット以外を判別する方法と Display Mode への応用

もう Facebook では 1 年の振り返りが始まっている今日この頃、いかがお過ごしでしょうか。世間では Advent Calendar のタスキ繋ぎが全力で行われていますが、初日でその役目を終えた私はのんびりと過ごしています。とか、書くと本気で本気で刺されそうなの…

OWIN を加速させる IIS と Helios の関係

突如として公開された Helios という謎のライブラリを知っている人はどのくらいいますか?Twitter ではこちらのブログ記事が割とシェアされていたりするんですが、冒頭に書いてある通り MVP Global Summit のセッションで発表されたライブラリです。*1Checki…

ASP.NET MVC に投げた 2 つ目の Pull Request がマージされました

ASP.NET MVC の最近のバージョンには OutputCache と子アクションを組み合わせた時に、OutputCacheLocation の値を適切に見てくれないバグがありました。例えば、グローバルフィルタで OutputCache を以下のように設定します。 // 出力キャッシュを無効化し…

ASP.NET MVC 5.1 の新機能を Nightly Build で試してみた

少し前に Visual Studio 2013 と同時に ASP.NET MVC 5 がリリースされましたが、既に開発チームは ASP.NET MVC 5.1 の開発を進めています。そして aspnetwebstack は MyGet で署名済みの Nightly Build を公開してくれているので、誰でも簡単に試せるように…

ASP.NET 4.5 からルーティングで生成される URL を小文字に出来るというお話

ASP.NET MVC でデフォルトのテンプレートと同じように作ると、その URL は以下のように大文字が含まれるものが生成されてしまいますよね。しかし、SEO 的には URL は小文字で統一して欲しいです。今までは Url.Action や Html.ActionLink などで小文字を指定…