みなさんこんにちは。今日はAzureのエラーについてのお話です。

ローカル環境でデバッグを終えたWEBアプリを、いざAzureに発行しアクセスしてみると、下記画像のエラーを吐いて動きませんでした。

もちろんローカル環境では問題なく動いていたので、「サーバー設定に違いない」と思いつつ、ログを見るためAzureサイトにFTPSでログインしてみます。

すると、ルートフォルダに「LogFiles」というフォルダがあり、そこに「eventlog.xml」というファイルがありました。

テキストエディタでファイルを開いてみると、そこには「Could not find a part of the path ‘D:\home\site\wwwroot\bin\roslyn\csc.exe’」との文字が。
csc.exeとはC#のコンパイラの事なので「えええ?コンパイルできないの?」と思いつつググってみると、stackoverflowで答えを見つけました。

https://stackoverflow.com/questions/45600943/azure-web-deploy-could-not-find-a-part-of-the-path-d-home-site-wwwroot-bin-ro

Microsoft.CodeDom.Providers.DotNetCompilerPlatformの1.0.6と1.0.7の問題なので、1.0.5にダウングレードしろと書いてあります。

そこで、自分のバージョンを確認してみると1.0.6となっていて、VisualStudioでNugetを開いてみると1.0.7のアップデートがありました。ダウングレードの前になんとなく1.0.7にアップグレードして再発行してみたところ、正常にアクセスできてしまいました。いまのところ何の問題もないので、しばらく様子見ですが、何かあればstackoverflowにある通り、1.0.5にダウングレードしたいと思います。もし、それでもダメな場合は、「roslyn」フォルダをFTPなどで直接アップロードする方法もあるようです。

さて、LogFilesフォルダには、そのほか「アプリケーションログ」や「Webサーバーログ」などが出力されますが、デフォルトでは出力されない設定になっているようです。ダッシュボードから「診断ログ」を開くと、各種ログをオンにできますので、お試しください。