2019年3月28日木曜日

C#でasync Mainメソッドを使いたいとき

C# 7.1からasync Mainメソッドが使えるようになったので、Mainメソッドから直接非同期メソッドをコールできるようになりました。

ただし、Visual Studioでデフォルトの設定だとビルドの言語バージョンが「C#の最新のメジャー バージョン (既定)」になっており、この場合C# 7.0を指している場合があります。
ビルド実行時に「エントリ ポイントに適切な静的 'Main' メソッドを含んでいません」というエラーが出る場合はこれにあたっているため、ビルドの言語バージョンで具体的なC#のバージョンを指定するか、「C#の最新のマイナー バージョン (最新)」を選択してみてください。

2019年1月22日火曜日

Bot Framework v4で、App ServiceにデプロイするとInternalServerErrorが出る現象について

Bot Framework v4でEmulatorでは通常に動作するものの、App ServiceにデプロイしてアクセスするとInternalServerErrorが出ることがあります。

こちらの現象について、4.1.5のバージョンでは以下の対処にて解決できました。

1..botファイルの修正
Visual StudioでBotアプリのプロジェクトを開くとxxx.botというファイルがありますが、こちらのservicesのエントリを以下のように記述してください。本来はApp Serviceのアプリケーション設定でアプリケーションIDやパスワードを設定するはずなのですが、これがうまく動作していないようです。
  "services": [
    {
      "type": "endpoint",
      "appId": "<アプリID>",
      "appPassword": "<パスワード>",
      "endpoint": "https://<デプロイしたApp ServiceのURL>/api/messages",
      "id": "<ボットID>",
      "name": "production"
    },
    {
      "type": "endpoint",
      "appId": "",
      "appPassword": "",
      "endpoint": "http://localhost:3978/api/messages",
      "id": "2",
      "name": "development"
    }
   ],


2. ライブラリを以下で指定(これは細かいバージョンによって異なる可能性があります)
・ターゲットフレームワーク:.NET Core 2.1
・Microsoft.Bot.xxx -> 4.1.5
・Microsoft.AspNetCore、Microsoft.AspNetCore.All -> 2.1.6