しばやん雑記

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

IIS

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 で機能とパフォーマンスを雑…

Application Request Routing (ARR) と Nginx で機能とパフォーマンスを雑に比較してみた

IIS

先日、Application Request Routing と Nginx の両方でロードバランサーを構築する話を書いたので、実際に動かしてみてパフォーマンスを調べてみました。構築を行った話については、以下のリンクを参照してください。IIS に Application Request Routing (AR…

IIS に Application Request Routing (ARR) をインストールしてロードバランサーを構築してみた

IIS

IIS と ARR を使って簡単なリバースプロキシを作るのはとても簡単だったので、今回は Server Farm を作成してロードバランサーを構築してみたいと思います。実際に作ってみる前は複雑そうな気がしていたんですが、実際には IIS Manager からあっさりと出来ま…

Application Request Routing (ARR) を使う場合に必ず設定しておきたい項目

IIS

最近は ARR を Azure に作成して遊んでいるので、デフォルトのままだと後で困りそうな設定を紹介しておきます。思ったより ARR の情報が少ないので頑張っていきたい。 クライアント IP アドレスの保存 ARR を使ってリバースプロキシを設定すると、アクセスさ…

HttpPlatformHandler に追加された processesPerApplication を検証してみた

IIS

HttpPlatformHandler に新しく追加された processesPerApplication の挙動が気になったので簡単に検証してみました。動かすアプリとしては手軽な Go を選びました。テンプレ的なコードですが、Martini を使った最低限のサーバーを用意します。 package main …

HttpPlatformHandler が IIS 8 以降の拡張機能として正式にリリースされていました

IIS

IIS Express についてフラフラと IIS 公式サイトを調べていたら、HttpPlatformHandler がダウンロード可能になっていることに気が付きました。HttpPlatformHandler v1.0 : The Official Microsoft IIS SiteHttpPlatformHandler については httpPlatformHandl…

IIS 7 以降でのアプリケーションプールと権限について調べた

IIS

今日、IIS 周りの設定を行っている時に「お前 ASP.NET/IIS の MVP のくせに IIS のこと何も知らないのかよ!」と説教され、そういえば IIS の上っ面しか使ってないと思ったので、理解が中途半端だったアプリケーションプールと権限について調べました。ちな…

URL Rewrite の Outbound Rule を使って HTTP レスポンスヘッダを書き換える

IIS

IIS の URL Rewrite でリクエストの Origin を見て Access-Control-Allow-Origin を書き換えることが出来ないか調べました。仕様的にはスペース区切りで複数のオリジンを定義出来るみたいなんですが、どうも実装がまだ追いついていないブラウザもあるような…

httpPlatformHandler をもっと面白く使っていきたい

Azure Web サイトが Java に対応した時に同時に追加された httpPlatformHandler ですが、何か面白い使い方があると思うので軽くまとめておきます。まずはちょっと似てる ARR と httpPlatformHandler の違いから簡単に。 ARR の場合 ARR の役割はリバースプロ…

IIS で SSL 3.0 を無効にする方法

IIS

今朝は SSL 3.0 の脆弱性が話題になっていますね。ちなみに私も影響を受けました(死SSL 3.0に深刻な脆弱性「POODLE」見つかる Googleが対策を説明 - ITmedia ニュース困らされて悔しいので、SSL 3.0 を IIS で無効化する方法を調べました。相変わらずレジス…

Windows Server Technical Preview の IIS というか http.sys の HTTP/2 有効 / 無効を切り替える方法

IIS

Windows Server Technical Preview の IIS というか http.sys が HTTP/2 に対応していたらしい - しばやん雑記 では IIS に HTTP/2 周りの設定が無いと書きましたが、色々とほげほげした結果 http.sys には設定が見つかったので紹介しておきます。Microsoft …

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 と IIS の HTTP エラー処理を理解する

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

Windows Azure Web サイトの管理を IIS Manager から行えるようになったらしい

Kudu で applicationHost.config を見ているときに /InetMgr の設定があるなぁと思っていたら、IIS Manager から Web サイトの設定を行えるようになっていたようです。Remote Administration of Windows Azure Websites using IIS Manager - Windows Azure -…

Windows Azure Web サイトのリバースプロキシでエラーになった件を解決した話

Windows Azure Web サイトで Perl を動かそうとしたらリバースプロキシでエラーになる件 - しばやん雑記 の続きで、問題を解決できたのでメモしておきます。Web サイトのリバースプロキシである ARR 部分で 502 になってしまっていて、ログも出せずに原因不…

URL Rewrite でサブディレクトリへの書き換えを行うコツ

IIS

Windows Azure Web サイトなどで PHP を使ったアプリケーションを開発する際に、割と問題になるのがドキュメントルートです。PHP や Ruby などのフレームワークは public というディレクトリ内が HTTP から見えるという想定で作られています。つまり、public…

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

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

WebMatrix 3 と iisnode の環境で WebSocket を有効にする方法

WebMatrix 3 を使うと簡単に Node.js と Socket.IO の開発環境を作ることが出来ますが、Socket.IO で WebSocket を使おうとするとコネクションが途中でフリーズしてしまいます。本来なら 101 Switching Protocols で HTTP から WebSocket への切り替えになる…

IIS と Vary ヘッダと HTTP 圧縮モジュールのバグ

id:Waquesseix この記事を読んで早速vary: user-agentを追加しようと思ったら、なんかバグでvaryが変えられない(圧縮をオフにしない限り)みたいでがっくりしました。。。 ASP.NET でカスタム HTTP ヘッダを追加する方法 - しばやん雑記 そういえば、ASP.NET …

ASP.NET でカスタム HTTP ヘッダを追加する方法

機密情報を含むJSONには X-Content-Type-Options: nosniff をつけるべき - 葉っぱ日記この記事を見て、そういえば ASP.NET でカスタム HTTP ヘッダを追加する方法を知らないなと思ったので、Web.config だけで解決できないか調べてみました。結論から書くと…

IIS Express で仮想サイトに複数のホスト名を割り当てる

IIS

Web サービスの開発をしていると、デフォルトである localhost:12345 というホスト名ではなくて www.mydomain.com みたいに、ちゃんとしたホスト名でテストする必要が出てくると思います。特に Area をサブドメインに振っている場合などはテスト自体できない…

HTML5 オフラインキャッシュを使ってみた

とあるアプリの開発で HTML5 のオフラインキャッシュを使ってみたので、ちょっと使い方を ASP.NET 的な視点で書いておきます。 キャッシュマニフェスト オフライン用にキャッシュしたいファイルを定義するファイルで、実体は非常に簡単なテキストファイルに…