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

しばやん雑記

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

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

ASP.NET NuGet

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

このパッケージをインストールすると、自動的に Web.config に machineKey 要素が追加されます。今のところ AES256 と HMACSHA256 で固定にしています。

MachineKey に関してもう少し知りたいという場合には、下の記事を参考にしてください。

1 つのアプリケーションを複数の仮想マシンで動作させる場合、問題となることが多いです。

例としてパッケージマネージャーコンソールから、MachineKeyGenerator をインストールしてみました。

f:id:shiba-yan:20150703130056p:plain

インストールするとテキストファイルも追加されますが、これは NuGet の仕様でパッケージに content か lib が含まれていないと install.ps1 / uninstall.ps1 が実行されないので、仕方なく入れています。

Web.config を開くと machineKey 要素が追加されているのが確認できます。本当は 1 行で追加されますが、分かりにくいので改行してあります。

f:id:shiba-yan:20150703130236p:plain

パッケージをアンインストールすると、MachineKey も同時に削除するようにしています。*1

既に MachineKey を設定済み、もしくは NuGet パッケージの復元を行った場合には処理をスキップするようにしています。一度設定した MachineKey が変わることはありません。

f:id:shiba-yan:20150703131127p:plain

実際に NuGet パッケージの復元を行いましたが、MachineKey は変わっていません。

PowerShell 力は相変わらずですが、少しコードを整理した後に GitHub にでも置いておこうかと思います。

追記

GitHub にスクリプト一式を置いておきました。build.cmd を叩けば nupkg が生成されます。

*1:この仕様は後で変更する可能性ありそう