しばやん雑記

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

IIS

URL Rewrite の Outbound Rule と gzip 圧縮は共存できないという都市伝説

IIS

デフォルトのまま Outbound Rule と gzip 圧縮を有効にしようとしてエラーになったことがある人は多そうです。もはや都市伝説的な感じすらしますが、適切に設定を行えば共存は可能です。当時は IIS 開発チームだった Ruslan 氏が IIS Forums 回答しています…

Docker で Windows Containers を使った時にコンテナホストから localhost でコンテナが見えない件

前に Windows Containers を使って IIS を立ち上げた時、コンテナホストから localhost でコンテナで動作しているはずの IIS を確認しようとしても出来なかったのですが、理由が分かったので書きます。ちなみに Docker と Windows Containers については前の…

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

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

IIS Express TestKit で使う設定を XML Document Transform を使って操作するようにしてみた

IIS

ぼちぼち改善している IIS Express で URL Rewrite のテストを書くパッケージですが、設定周りに柔軟性が無くかなりイマイチだと思っていたので XML Document Transform を使って改善しました。NuGet に公開している最新版では XDT が使えるようになっていま…

Visual Studio Code と IIS Express を使って PHP 7 の実行環境を整える

これまで Umbraco で管理してた shibayan.jp を、もっと軽量で書きやすい Flat-file CMS である Grav に移行するために、Visual Studio Code と IIS Express で快適にローカルで確認できる環境を作ろうと思いました。少し前まではこういう場合 WebMatrix を…

ネイティブ HTTP モジュールを使って IIS のログを書き換える

IIS

久し振りに iislua に機能を追加しようと思ったので、IIS のログを書き換える方法を調べて試しました。新しい項目を追加することは出来ないみたいですが、既存の項目であれば書き換え可能みたいです。CHttpModule には OnLogRequest というメソッドがあるの…

IIS Express TestKit で Outbound Rules のテストを書けるようにした話

IIS

前回作った IIS Express TestKit が Inbound の一部にしか対応出来ていなかったので、少し気合を入れて利用範囲を広げる対応を行いました。はいふりが始まる前だったので少し急ぎました。タイトルにも書いたように Outbound Rules に対するテストが書けるよ…

IIS Express と xUnit を使って URL Rewrite のテストを書く

IIS

ASP.NET というか IIS を使ってアプリケーション開発を行っている場合、一度はお世話になっていると思う URL Rewrite ですが、割と書き方が難しいです。IIS Manager にパターンのテストツールはありますが、大した機能は持ってません。パターンをテストした…

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

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

IIS 向けに Brotli を実装した HTTP 圧縮モジュールを作ってみた

IIS

以前に bzip2 の圧縮を行うモジュールを IIS に向けに作ったので、何となく Brotli で圧縮するモジュールも作ってみました。ちなみに Brotli は Google が開発した新しい圧縮形式です。IIS は圧縮形式をネイティブな DLL で拡張可能に作られているので、Brot…

HttpPlatformHandler v1.2 が公開されていました

IIS

Web PI を起動した時に HttpPlatformHandler がアップデートされていたことに気が付きました。インストールしてバージョンを確認したところ 7.1.1959.0 になっていました。前回のアップデートで調べた時にはバージョン 7.1.1954.0 だったので、少しだけビル…

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

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

Lua で処理が書ける iislua を IIS 公式サイトで公開しました

IIS

IIS 公式サイトの Community Contributed Download に iislua を申請してから 1 月以上かかりましたが、昨日ようやく公開されました。基本的には GitHub へのリンクとなっています。iislua for iis 7.x : The Official Microsoft IIS Site審査をしていたのか…

URL Rewrite で環境変数の値を使うプロバイダーを書いてみた

IIS

Apache の mod_rewrite なら環境変数の値を使って条件が書けるのに、IIS の URL Rewrite ではサーバー変数の値しか使えなかったので、プロバイダーを書いて実現してみました。ちなみに mod_rewrite なら以下のように書けます。 RewriteEngine On RewriteCond…

Windows Server Technical Preview 2 と ARR 3.0 を組み合わせて HTTP/2 対応のリバースプロキシにしてみた

IIS

URL Rewrite 2.0 や ARR 3.0 が Windows Server Technical Preview 2 の IIS 10.0 へのインストールに対応したので、今更ながらインストールして遊んでみました。ARR などのアップデートに関しては以下の記事で紹介しています。URL Rewrite 2.0 と Applicati…

IIS の ネイティブ HTTP モジュールで Web.config から設定を読み込む方法を調べた

IIS

IIS ネイティブ HTTP モジュールは設定を Web.config から読み込むのが一般的ですが、どうやって読み込むのか分からなかったので調べました。ネイティブ HTTP モジュールの作り方は以前に書いた通りです。IIS で使えるネイティブ HTTP モジュールの作り方 - …

Azure Application Gateway が公開されたので試してみた

今朝に突然、Azure Application Gateway というサービスが公開されて、GA になってました。プレビューとして公開されることなく GA というのは珍しい気がします。詳細は Azure 界の抱かれたい男 No.1 こと @kosmosebi のブログであるブチザッキに任せるので…

Lua で処理が書ける IIS 向け HTTP モジュール lua-iis-module を作ったので公開しました

IIS

Apache と nginx では Lua を使って HTTP リクエストに対して処理を書けるのが羨ましかったので、IIS でも lua-nginx-module のような処理が書ける HTTP モジュールを実装しました。要するにパクリです。shibayan/lua-iis-moduleバイナリの配布はしていない…

IIS で使えるネイティブ HTTP モジュールの作り方

IIS

最近は IIS の拡張機能について調べていたので、今回は C++ を使って HTTP モジュールを作ってみました。IIS のネイティブ HTTP モジュールはちゃんと実装手順が決まっています。まずは最初に流れを簡単に紹介しておきます。 CHttpModule を継承したクラスを…

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

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

IIS の HTTP 圧縮モジュールは拡張可能らしいので bzip2 で圧縮するモジュールを作ってみた

IIS

IIS に組み込まれている HTTP 圧縮を行うモジュールはデフォルトで gzip / deflate を使うようになっています。このあたりの設定は applicationHost.config に書いてあるのですぐに分かります。scheme で dll を指定している点が気になったので、とりあえず …

IIS Express のサイト設定から存在しないものを一括で削除する

IIS

普段から Visual Studio と IIS Express を利用したアプリケーションの開発を行っていると、作成した分だけ IIS Express のサイト設定が一方的に追加されていきます。例として、普段使っているマシンの applicationHost.config を紹介しておきます。調べてみ…

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

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

URL Rewrite 2.0 と Application Request Routing 3.0 がアップデートされていました

IIS

松山から帰ってきてのんびりしていたら、Azure 界の抱かれたい男 No.1 こと @kosmosebi から ARR 3.0 がアップデートされたという情報を入手しました。arr3.0が新しくなったらしい— こすもす.えび (@kosmosebi) June 7, 2015疲れているんですが、気になった…

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

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

Windows Server Technical Preview 2 がリリースされたので IIS 10.0 について調べた

IIS

昨日行われた Ignite のキーノートで Windows Server 2016 について発表があり、Azure の仮想マシンで Technical Preview 2 が使えるようになっていたので、何時ものように IIS 周りだけ見ようかと思います。発表内容については、まとめる速度 No.1 の抱かれ…

URL Rewrite 2.0 と ARR 3.0 を Web PI からインストールした場合は Hotfix に注意したい

IIS

普段からとても簡単なので Web PI を良く使っていますが、こっそりと Hotfix がダウンロードセンターで公開されているケースがちらほらあったのでまとめます。具体的には Web PI からインストールした URL Rewrite 2.0 や ARR 3.0 に関して、いくつか Hotfix…

人生で初めて Azure Cloud Services の RoleEntryPoint で IIS の設定を弄った話

Azure Cloud Services の Web Role を使って IIS の設定を変更してみたかったので、田口社長のブログを検索して、その中の 1 つを参考にしつつ試しました。Webサイトのフロントに自前でクラウドサービスを使ったARR | たんたかさすが安心と信頼の田口社長、…

IIS 8.5 でログに特定のクッキーだけを出力する

IIS

IIS ログに特定の名前のクッキーだけを書きだしたい人生だったので、URL Rewrite を使って実現してみました。IIS 8.5 からカスタムフィールドの追加が出来るようになったので、それを組み合わせます。考え方としては URL Rewrite でクッキーの値をサーバー変…

IIS に Application Request Routing (ARR) 向けのチューニングを試してみたのでメモしておく

IIS

パフォーマンス確認のために Application Request Routing (ARR) に適した設定を少しだけ探ってみました。結局 Nginx には余裕で負けたわけですが、試したメモとして残しておきます。Application Request Routing (ARR) と Nginx で機能とパフォーマンスを雑…