投稿

ラベル(IIS)が付いた投稿を表示しています

hostファイルが原因でIISのアプリケーションプールが停止する

イメージ
これまで検証用のPCでIISが動作しないという現象にしばし出くわしていたが、その原因が判明した。通常利用ではあまり該当しないと思うが、検索しても出てこないので公開しておく。 現象 IISの起動後にWebアクセスすると「503 Service Unavailable」が返ってくる。IISマネージャで見てみるとアプリケーションプールが停止している。またWindowsイベントログには次のような警告が残されている。 イベントID: 5139 ソース: WAS アプリケーション プール 'ASP.NET v4.0' に使われているワーカー プロセス '3336' のプロトコル 'http' に対するリスナー チャネルはリスナー チャネル エラーを報告しました。データ フィールドにはエラー番号が含まれています。 このデータフィールドには 80072AFC ( FC 2A 07 80 )が含まれている。 AppPoolの停止自体はこのエラーが5回連続で発生したためラピッドフェール保護により実行される(直後のエラーログ)。 原因 ネットで検索すると、コンピュータ名に空白を含む場合や実行ユーザの権限の問題などが出てくる。しかし今回の原因はhostファイルだった。 注釈:hostファイル 「C:\Windows\System32\drivers\etc\host」のテキストファイル。ホスト名-IPアドレスの対応を手動で設定する。DNSがないローカル接続の業務システムなんかではたまに利用されている。 このhostファイルに、自身のコンピュータ名に対して実際には無いIPアドレスが設定されていた。この設定を削除したら正常に稼働するようになった。 おそらくコンピュータ名から正引きしたIPアドレスに対してバインドしようとして、ソケットエラーが発生してたのだと推測される。 今回は検証用に流用したPCだったので、過去の設定が残っていてこのような現象が発生した。 以上。

IISでページ単体にアクセス制限などをかける

イメージ
小ネタ。IISでは接続元のIPアドレスによってアクセス制限を設定したりできる。説明を見ると大抵フォルダー単位で設定をしているが、それをファイル単位で設定する方法。 IISマネージャで 通常はこのようにフォルダまでしか表示されていないが 上にあるアドレスバーでファイル名までパスを入力してエンターを押すと そのファイルだけツリーに表示される。これでフォルダにするのと同じようにファイルに設定を加えることができる。変な動作。 configファイル 結局のところIISマネージャで設定したものは.configファイルに書かれる。Default Web Siteの配下なら"C:\inetpub\temp\appPools\DefaultAppPool\DefaultAppPool.config"など。アクセス制限は以下のような記述。 <location path="Default Web Site/ARFusen/Contents"> <system.webServer> <security> <ipSecurity> <add ipAddress="192.168.1.1" allowed="false" /> </ipSecurity> </security> </system.webServer> </location> このpath属性にファイルのパスを入れれば別に普通にファイルでも動作する。まあでもIISマネージャーがインストールされている場合は、上書きされたりしても嫌なのでGUIで設定できたほうがいいよね。 以上 設計としてはフォルダで分けるほうが妥当なんだけど、今回は既に稼働済みのシステムでURLを変えずに特定ページのみ制限したかったのでやってみた。