Kobarin's Development Blog

C#やASP.NETなどについての記録です。

Windows7からWindows10へのアップグレード後にIISサイトが動かない問題

標題のとおりですが、開発用PCのOSアップグレードした所、サイトが動きません。まぁ、OSアップグレードしてWebサーバーがそのまま動いてくれるとは到底思えないので、常識的に考えて想定内の出来事ですが。

症状

さて、とりあえず症状から。
ブラウザでサイトを開くと、以下の503エラーが現れます。

Service Unavailable
HTTP Error 503. The service is unavailable.

原因

当然これだけでは原因がわからないので、イベントログを開きます。
イベントビューア → 「Windowsログ」→「システム」を開くと、最新のエラーに5002が見つかりました(抜粋)。

ログの名前:         System
ソース:           Microsoft-Windows-WAS
イベント ID:       5002
説明:
アプリケーション プールを提供しているプロセス内での一連のエラーのため、アプリケーション プール '(アプリケーションプール名)' は自動的に無効になっています。

IIS Managerを開き、指摘されているアプリケーションプールを確認すると「停止」になっているので「開始」をして再度サイトをブラウザで開くとまた「停止」されます。どうやら何かの原因で「開始」できないようです。
まぁよくわからないので、その直前のエラー5139を開きます。

ログの名前:         System
ソース:           Microsoft-Windows-WAS
イベント ID:       5139
説明:
アプリケーション プール '(アプリケーションプール名)' に使われているワーカー プロセス '2888' のプロトコル 'http' に対するリスナー チャネルはリスナー チャネル エラーを報告しました。データ フィールドにはエラー番号が含まれています。

意味が分かりません…。エラー番号の「5139」を調べると、日本語サイトは見つかりませんが、英語フォーラムで質問している人がいて、回答者は「authentication(認証)」が原因であるような事を言っていますが、サイトのアクセス権は以前と変わらないため、これが原因とは考えにくいです。

ただアプリケーションプールを確認中に気になった点として、各々のアプリケーションプールが「どのユーザーとして実行するか」を示す「プロセスモデル」の「ID」があります。アプリケーションプールの右クリックメニューから「詳細設定」を開くと下図のウィンドウが開きます。

f:id:fskkoba:20150925101819j:plain

赤枠の箇所が全て「NetworkService」になっていましたが、通常は「ApplicationPoolIdentity」らしいので、試験的に変更してみます。

最初の試練「HTTP 503 Error」はクリア

すると冒頭の503エラーはなくなりました。
しかしこれで全て解決…というわけにはいかず、今度はASP.NET側でのエラー画面です(すいません、スクショもエラーメッセージもメモし忘れました)。

次の試練「Rewrite」

システムのイベントログからは有益な情報が見つからないため「Application」イベントを探ってみたところ、気になるエラーを発見。

モジュール DLL C:\WINDOWS\system32\inetsrv\rewrite.dll を読み込めませんでした。このデータはエラーです。

対応

rewrite(URL書き換えモジュール)かぁ…確かに怪しい。2.0のままバージョンアップもされていないし、今までも結構やらかしてくれてます。
上記メッセージを読む限り、アップグレード時に消えちゃったのかな?と思い、エクスプローラーでinetsvrフォルダに移動してみたところ「rewrite.dll」があるんです。無いはずのrewrite.dllが、そこにあるんです。エラーメッセージ、奥が深いです。

とりあえず再インストールすれば適当に解決するかな?と思い、一度rewriteをアンインストールし、Web Platform Installerを立ち上げてrewriteをインストール(「プログラムと機能」からrewriteを選択し右クリックから「修復」でもOKかも)…が、「rewriteは、IIS7.0以降にインストール可能です」のメッセージが現れます。
「いや、Windows10なんでIIS10ってば。10なんだから”7以降”でしょ??」と抗議したいところですが、いかに理不尽な要求でも機械が相手なのでこちらが解決しなければなりません。

推測ですが、おそらく「IIS7以降」というのはおそらく8とか9あたりまでの事で、10は新し過ぎて理解できないのかもしれません…と勝手に解釈。
IIS10用のrewrite.dllも探しましたが見つからないので、「いいや、とりあえずアンインストールはしたんだから、サイトを開いて確認しよう」という事で、Firefoxで実行。

結果

無事、実行できました!
…しかし、URL書き換えはどうなるんだろう?まさか標準で備わったとか?なわけないか。次回以降、調べてみたいと思います。

SQLserverの.mdfファイルを別マシンでattachできない(Error:5123)の対応

症状

テスト環境をつくろうと、サーバーの.mdfファイルをローカルPCに移動してSSMSからattachしようとしたところ、Error5123により出来ない問題が起こりました。

f:id:fskkoba:20150729163503j:plain

情報源

エラー番号「5123」をもとに検索したところ、以下のスレッドが見つかりました。

Error: 5123 CREATE FILE encountered operating system error 5A(Access denied.)

どうやらアクセス権の問題らしく、ここでは「everyoneにfull control与えればOK」とある。

解決

そこで自PCで確認すると、やはりアクセス権が親フォルダから継承されていないことが分かりました。やはり別マシンから移行した際はよく確認しないといけませんね。
アクセス権を親から継承して再度attachしたところ、無事にできました。

SQL Serverの別名が効かなくなった際の対応

SQL Serverにエイリアス(別名)で接続する - Kobarin's Development Blog
で昔投稿した別名設定に関して、先日突如機能しなくなったため、Technetフォーラムにて
別名で接続できない
のスレッドでご相談させて頂きました。以下、結果のみまとめます。

経緯

Vistual Studio 2015のインストール、及び同時期にWindows UpdateにてSQL Server 2014 SP1を適用したところ、SQL Serverインスタンスへの別名接続できなくなった。

試した事/確認したこと

  • 「サービス」で「SQL Server Browser」の再起動 → 改善されず
  • 別名でなくインスタンス名で接続 → 接続成功
  • SQL Server Configuration Manger(構成マネージャー)にて別名の確認 → 以前通り

解決

  1. SQL Server Configuration Manger(構成マネージャー)を開く
  2. SQL Serverのネットワーク構成」 >「(instance name)のプロトコル」を開く
  3. TCP/IP」が”無効”になっていたので、これを”有効”に変更

結論

VS2015のインストールが原因なのか、SQL2014のSP1が原因なのか未だにわかりませんが、とりあえず上記の通り解決しました。

「地図で見る統計」と「地図による少地域分析」

政府統計APIの公開など、政府による保有データの活用促進が活発になっている昨今ですが、GISも以前よりかなり洗練されたものが出来ている事を最近知りました。もっと前からあったのかもしれませんが、気づきませんでした。

内容としては、ブラウザで閲覧可能で、地図上に統計情報(人口や世帯数など)を表示できるといったものです。機能は限られているものの、従来は民間の有料サービスでしか利用できなかったため、こうした動きは歓迎です。

ただ、ちょっと分かりにくいことに、同種のサービスが2種類あり、最初少し戸惑いました。どちらもe-Statによる運営らしいですが、ここで違いを書いておきたいと思います。

まず政府統計の総合窓口 GL01010101をご覧ください。その中で、

  • 「地図で見る統計(統計GIS)」
  • 「地図による少地域分析(jSTATMAP)」

の2つのリンクがあります(2015年5月現在、「地図や図表で見る」枠内にあります)。
ザックリですが、共通点と相違点について列挙してみました。

共通機能

  1. ブラウザのみで閲覧可能
  2. 統計データとしては、国勢調査だけでなく経済センサス等もある(全く同じラインナップではない)
  3. 少地域単位で人口や世帯数などを色分け表示できる。少地域とは、国勢調査において最も細かい単位の住所区分で、いわゆる町丁目と呼ばれるものと思って下さい。
  4. 色分けしたエリアにラベルを表示できる(エリア名、統計値、など)
  5. 指定範囲の面積や距離の計測可能

地図で見る統計

  1. 誰でも使用可能
  2. 少地域のみならず、市区町村単位、県単位による表示も可能

地図による少地域分析

  1. 「お試し版」と「正式版」があり、「お試し版」は誰でも利用可能だが、「正式版」は審査があるらしい(数分で承認メールが届いたけど)
  2. 県や市による集計は出来ないが、少地域に加えてメッシュ単位の集計が可能。国勢調査は1km・500m・250m。経済センサスは1km・500m。
  3. 円や四角形、ポリゴン(多角形)を設定して集計できる。ただし基になる統計の数値はメッシュなので、これを按分する事で計算しているようです(わからない方は、”面積按分”で検索)
  4. しかも円やポリゴンを「My エリア」みたいに保存できる(!)
  5. 集計結果を表形式で出力可能
  6. プロットを地図上にポイントし、属性(金額とか身長とか…)を設定可能。更にこの属性値の集計もできるらしい(当方で試したところ、「プロットの場合違う指標を選択しろ」的なメッセージが現れて出来ませんでしたが)

以上、つらつら書いてみましたが、簡単に分けると下のような使い分けなのかな、と思います。

  • 「地図で見る統計」は、「この辺りの人口ってどんな感じ?」的な、小難しい事はいいからとにかくササッと使うような用途
  • 「少地域分析」は、かなりビジネスライクにマーケティング分析等に使う用途

といったところでしょうか。
もちろん本格的な調査であるなら民間のサービスを使わないとなりませんが、簡単な調査やGIS初体験的な用途としては十分だと思います。
今日使ったばかりなので、まだ知らない事や勘違いしている部分も多いと思います。
何か分かり次第、書いていきたいと思います。

Regular Expression Checker作りました

正規表現のチェックを行うためのツールRegular Expression Checker」を作りました。

当初は確認だけの目的で作りましたが、置換えもできれば便利だと思いつき、置換え機能もつけました。

利用用途は色々です。

  • サンプルにもありますが、CSVの置換え
  • ある物語をコピペして、「私」と「君」が出現する回数を比べる(だから?)
  • 首相演説をコピペして、特定用語の出現数を調べる(「消費税」「教育」など)
  • 金額箇所の桁あわせ(「1,234千円」→「1,234,000円」)

よいサンプルが思いつきませんでした。また思いつき次第追記します。

HTTP Error 500.19 - error code:0x8007000d の解決方法

前回記事と同様、WindowsPCでIIS7.5を初起動させようとして起こる、よくあるらしい現象。

StackOverFlowの書き込みによれば、前回同様、基本的にWeb Platform Installerに起因する現象のようです。

エラーメッセージにはApplicationHost.configが原因みたいな事が書かれていますが、実際にはApplicationHost.configを編集する必要はなく、Web Platform Installerを使って「url rewrite」をインストールすることで解決できました。
私なりに原因と解決方法をまとめると、以下の通りです。

原因

Web Platform Installerを使ってASP.NETをインストールすると発生する

解決方法

Web Platform Installerを使ってurl rewriteをインストールする

HTTP Error 500.21 - error code:0x8007000d の解決方法

ローカル環境に新たにIISをインストールして実行したところ、表題の通りのエラーが発生し、解決できたのでメモ。

環境

症状

サイト全体において表題のエラーが発生。

HTTP Error 500.21
Error Code 0x8007000d
Message ASP.NETがインストールされていないか、完全にインストールされていません(再現できなかったので覚えているメッセージです。少し違うと思います)

原因

エラーメッセージは「ASP.NETがインストールされていない」旨の内容ですが、正確にはIIS側にASP.NETを登録(?)するプロセスがされていないことが原因のようです。Web Platform Installerを使って.net frameworkをインストールするとこの処理がされないような情報も以前見た気がしますが、定かではありません。

解決方法

HTTP Error 500.21 when trying to host an ASP.NET web app with IIS 7 のWinAnimesh氏のReplyの通りですが、詳しく手順を示します。

  1. コマンドプロンプトを管理者権限で実行
  2. 「C:\Windows\Microsoft.NET\Framework64\v4.0.30319」に移動
  3. 「aspnet_regiis -i」を実行
  4. 数十秒後、処理が完了します