Skip to content

Web アンケートアプリの導入と設定 ​

第3版作成 最終更新 (日本時間)
確認バージョン1.5.8.1

プリザンターをバックエンドにした Web アンケートの独立アプリを、自分の環境に導入する手順です。作ったアンケートの公開までは使い方に続きます。

ソースと配布物: vehiclevisionjp/VehicleVision.PleasanterTools.Questionnaire(本ページは最新版 v0.10.0 時点)

  • どの機能・設定がどの版から使えるかは概要とバージョン別の機能差、版ごとの更新時の作業(マイグレーション・設定追加・振る舞いの変更)は変更履歴にあります。更新するときは、今の版から最新版までの間の変更履歴を、先に読んでください。
  • 新しい版で加わった設定や節には、見出しに v0.5.0 以降 のようなアプリの版のバッジを付けています。

導入先は次のいずれかです。どれも GitHub Release の同じ配置用 ZIPを使います。アプリは .NET 10 のフレームワーク依存配置なので、実行先に .NET 10 のランタイムが必要です。

  • Azure App Service の Linux Web App(推奨)
  • Azure App Service の Windows Web App
  • オンプレミス Windows Server の IIS

構成と前提 ​

図を読み込み中…

  • アプリ専用の DB を、プリザンターの DB とは別に作ります。 DB サーバーは共用してもかまいませんが、プリザンターと同じデータベースにアプリのマイグレーションを当ててはいけません。アプリはプリザンターの DB には触れず、標準 Web API だけを使います。
  • アプリは既定では独立したホスト名の / で動きます。プリザンターのログインで管理画面へ入る機能を使うなら、プリザンターと同じホスト名のサブパス(例 /questionnaire/)に置きます。

用意するものは次のとおりです。

  • 導入するバージョンの GitHub Release にある VehicleVision.PleasanterTools.Questionnaire-X.Y.Z-portable.zip と、同名の .zip.sha256(v0.10.0 から名前に -portable が付きます。 v0.9.3 以前は VehicleVision.PleasanterTools.Questionnaire-X.Y.Z.zip)
  • .NET 10 を動かせる Azure Web App、または .NET 10 Hosting Bundle を入れた IIS
  • アプリ専用の空の DB
  • アプリから届くプリザンターと、その API キー(回答を書き込むサイトを操作できるユーザーのもの)
  • アプリ用の DNS 名と HTTPS 証明書(HTTP は閉じた環境でだけ使う)
  • DB 接続文字列と API キーを保管する秘密情報の管理場所

対応する DB ​

DBMSQUESTIONNAIRE_DB_PROVIDER
SQL Server / Azure SQL DatabaseSqlServer
PostgreSQLPostgreSql
MySQLMySql
SQLite(簡易セットアップ・デバッグ専用)v0.4.0 以降Sqlite

SQLite は本番では使いません。 プリザンターが SQLite に対応していないので、プリザンターと DB サーバーを共有する構成にもなりません。選ぶと起動ログと管理画面に警告が出ます。

マイグレーションは前方適用だけです。起動時の自動適用は v0.4.0 で導入され(既定は無効)、v0.5.0 から既定で有効です。有効なら、未適用があれば DB のロックを取って適用し、終わるまで /healthz と /ready 以外へは通しません(/ready は 503)。QUESTIONNAIRE_DB_AUTO_MIGRATE=false で無効にしたときは、未適用が見つかると起動を中止するので、手動で適用します(後述)。

配置用 ZIP を確認する ​

ダウンロードしたら、SHA-256 を確認します。

powershell
$version = "X.Y.Z"
$zip = "VehicleVision.PleasanterTools.Questionnaire-$version-portable.zip"
$expected = (Get-Content "$zip.sha256").Split(' ', [System.StringSplitOptions]::RemoveEmptyEntries)[0]
$actual = (Get-FileHash $zip -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $expected.ToLowerInvariant()) {
    throw "配置用 ZIP の SHA-256 が一致しません"
}

展開すると、直下がそのまま Web アプリの配置先です。少なくとも次のファイルがあることを確認します。資格情報の実値は ZIP に含まれません。v0.10.0 から、デバッグ記号(.pdb)は含まれません。

text
VehicleVision.PleasanterTools.Questionnaire.Web.dll
web.config
wwwroot/index.html
wwwroot/admin.html
App_Data/Parameters/README.md

web.config は IIS 用で、Linux では使われませんが、同じ ZIP を Windows の Web App と IIS にも配るため入っています(消さないでください)。

必須の設定 ​

次を環境変数で与えます。資格情報を appsettings.json・配置用 ZIP・ソース管理に書かないでください。

設定内容
ASPNETCORE_ENVIRONMENTProduction
QUESTIONNAIRE_DB_PROVIDERSqlServer / PostgreSql / MySql(Sqlite は簡易セットアップ・デバッグだけ)
QUESTIONNAIRE_DB_CONNECTIONSTRINGアプリ専用 DB の接続文字列(Sqlite だけは省略可)
QUESTIONNAIRE_DB_AUTO_MIGRATE未設定か true で、起動時に未適用のマイグレーションを適用する。false で無効
QUESTIONNAIRE_DB_MIGRATION_LOCK_TIMEOUT_SECONDS起動時の自動適用でロックを待つ上限秒。既定 300
QUESTIONNAIRE_PLEASANTER_BASEURLプリザンターのベース URL
QUESTIONNAIRE_PLEASANTER_APIKEYプリザンターの API キー
QUESTIONNAIRE_PLEASANTER_TIMEZONEAPI キーのユーザーのタイムゾーン。日本なら Asia/Tokyo
QUESTIONNAIRE_SECRET_KEY32 バイトの乱数を Base64 にしたもの。失うと、登録済みの 2 要素認証が使えなくなる

秘密鍵は、配置用 ZIP の DLL で作れます。標準出力に 1 回だけ出るので、そのまま秘密情報の管理場所へ登録し、平文のファイルに残さないでください。更新のたびに作り直さず、同じ環境では同じ値を使い続けます。

powershell
dotnet .\VehicleVision.PleasanterTools.Questionnaire.Web.dll --generate-secret-key

DB 接続は暗号化が必須 ​

接続の暗号化と、接続先の証明書の検証が必須です。

DBMS本番接続の要点
SQL ServerEncrypt=True;TrustServerCertificate=False
PostgreSQLSsl Mode=VerifyCA または VerifyFull
MySQLSslMode=VerifyCA または VerifyFull

自動適用は既定で有効なので、Web アプリの DB アカウントにはスキーマ変更の権限が要ります。実行用のアカウントを最小権限に分けたいときは、QUESTIONNAIRE_DB_AUTO_MIGRATE=false にして、後述のコマンドで手動適用します。QUESTIONNAIRE_DB_ALLOW_INSECURE=true と QUESTIONNAIRE_DB_SKIP_MIGRATION_CHECK=true は検証用の逃げ道なので、本番では設定しません。

任意の設定 ​

そのほかの設定(メール送信、配布アセットの保存先、管理画面の入口の変更、サブパス配置、SAML、Pleasanter のログインでのシングルサインオン、bot 対策、添付ファイル、レート制限、バックログの上限など)にも QUESTIONNAIRE_ で始まる設定があります。一覧は、リポジトリの _documents/設定パラメータ一覧.md にあります。主なものを挙げます。

設定内容既定値導入版
QUESTIONNAIRE_ADMIN_PATH管理画面の入口。英小文字・数字・ハイフンだけ。外部設定だけで指定し、変更には再起動が要る/adminv0.6.0
QUESTIONNAIRE_ADMIN_PASSWORD_SIGNINSAML か Pleasanter のログインが有効なときに、合言葉ログインを許可するか。外部設定だけtruev0.6.0
QUESTIONNAIRE_ADMIN_RESCUE_TOKEN合言葉ログインを塞いだときの救済トークン(32 文字以上)。外部設定だけ未設定v0.6.0
QUESTIONNAIRE_PATH_BASEサブパスに置くときのプレフィックス(例 /questionnaire)。末尾の / は付けない未設定(/)v0.7.0
QUESTIONNAIRE_ADMIN_TWOFACTOR管理者の 2 要素認証。required・optional・disabledoptionalv0.1.0
QUESTIONNAIRE_ALLOW_INSECUREHTTPS へのリダイレクトと HSTS を緩める(開発・閉域用)falsev0.3.0
QUESTIONNAIRE_EMBED_ALLOWEDHOSTS設問の中の埋め込みコンテンツを許す配信元ホスト未設定v0.1.0
QUESTIONNAIRE_EMBED_ALLOWEDPARENTS回答画面を iframe で埋め込める親サイト未設定v0.4.0
QUESTIONNAIRE_ASSET_STORE配布アセットの保存先(Database・Path・AzureBlob・S3)Databasev0.3.0
QUESTIONNAIRE_MAINTENANCE_MODEtrue で全体の回答受付を止める(環境変数で止めると、画面から解除できない)未設定v0.4.0
QUESTIONNAIRE_BACKLOG_PER_SURVEYアンケートごとに送信待ちにできる回答数の上限10000v0.1.0
QUESTIONNAIRE_BACKLOG_TOTAL全アンケート合計の送信待ちの上限50000v0.1.0
QUESTIONNAIRE_ATTACHMENT_MAXFILESIZEBYTES回答に添付できるファイル 1 件の上限(バイト)5242880(5 MiB)v0.1.0
QUESTIONNAIRE_AUDITLOG_RETENTION_DAYS操作の記録を残す日数365—

管理画面の入口を変えると /admin.html を直接開く URL は 404 になります(v0.7.0 から)。

管理画面の「設定」から変える v0.5.0 以降 ​

特権管理者は、管理画面の「設定」から、Pleasanter への接続、メール送信、保持日数・流量・上限値、bot 対策のしきい値、埋め込みを許す親サイトと配信元を変えられます。

  • 外部設定(環境変数)に値がある項目は、画面で固定されます(値は画面の値より優先されます)。それ以外は、保存後に再起動なしで反映されます。
  • 秘密を含む項目(SMTP のパスワードなど)は書き込み専用で、保存後も画面へ値を返しません。
  • DB 接続、管理者の 2 要素認証の方針、HTTPS の緩和、管理画面の入口など、起動やログインに関わる設定は、画面からは変えられません(設定パラメータ一覧の区分「画面化しない」)。
  • 設定の保存先は、アプリ専用 DB の AppSettings 表(マイグレーション M0030)です。

メール送信 v0.1.0 以降 ​

自動返信メールと管理者の招待メールに使います。既定は無効で、設定しなければ 1 通も出ません。

設定内容
QUESTIONNAIRE_MAIL_ENABLEDtrue で有効。既定は false
QUESTIONNAIRE_MAIL_TRANSPORT送信経路。Smtp(既定)・AmazonSes・AzureCommunicationServices
QUESTIONNAIRE_MAIL_BASEURLメールに載せる URL の起点(例 https://survey.example.jp)。空のままでは有効にできません
QUESTIONNAIRE_MAIL_FROM_ADDRESS差出人のアドレス(全体設定だけ。アンケートごとには変えられません)
QUESTIONNAIRE_MAIL_SMTP_HOST・_PORT・_SECURITY・_USER・_PASSWORDSMTP の接続。ポートの既定は 587、_SECURITY は StartTls(既定)・ImplicitTls・None
QUESTIONNAIRE_MAIL_SES_REGIONAmazon SES のリージョン(資格情報は IAM ロールから)
QUESTIONNAIRE_MAIL_ACS_ENDPOINTAzure Communication Services のエンドポイント(資格情報はマネージド ID から)
  • Amazon SES と Azure Communication Services には、資格情報を設定する口がありません(秘密を保管しないための設計です)。どちらも実機(AWS / Azure)では未検証と、リポジトリの手順書に書かれています。本番へ入れる前に 1 通試してください。(2026-09-14 時点の記述です)
  • Azure Communication Services 経由では、差出人の表示名を送信ごとに変えられません。Azure 側の MailFrom アドレスに登録した表示名が使われます。
  • 差出人の表示名・返信先・BCC は、アンケートごとにも設定できます(v0.3.0 以降)。
  • 管理画面の「設定」では、保存前の設定で試験送信できます(v0.5.0 以降)。

システムメンテナンス v0.4.0 以降 ​

管理画面上部の「メンテナンス設定」から開始・解除します。開始すると、すべての回答画面と回答 API が 503 と Retry-After: 300 を返し、回答をプリザンターへ送るワーカーも止まります。管理画面・ログイン・/healthz・/ready は止まりません(/ready はメンテナンス中も 200 のままです)。

DB の停止やマイグレーションのように管理画面から DB を操作できない保守では、再起動の前に QUESTIONNAIRE_MAINTENANCE_MODE=true を設定します。環境変数で止めたメンテナンスは、管理画面から解除できません。 作業後は環境変数を削除するか false に戻して再起動します。回答者向けの文言は、管理画面で日本語・英語を設定でき、環境変数 QUESTIONNAIRE_MAINTENANCE_MESSAGE_JA・QUESTIONNAIRE_MAINTENANCE_MESSAGE_EN で上書きできます。

配布アセットの保存先 v0.3.0 以降 ​

QUESTIONNAIRE_ASSET_STORE で選びます。未設定なら DB に保存します(更新時に既定は変わりません)。

値保存先必須の追加設定
Database(未設定)アプリ専用 DBなし
PathファイルシステムQUESTIONNAIRE_ASSET_PATH(複数インスタンスでは共有ディレクトリ)
AzureBlobAzure Blob StorageQUESTIONNAIRE_ASSET_AZURE_CONTAINERURI(マネージド ID)。使えなければ QUESTIONNAIRE_ASSET_AZURE_CONNECTIONSTRING と QUESTIONNAIRE_ASSET_AZURE_CONTAINERNAME
S3Amazon S3 または S3 互換QUESTIONNAIRE_ASSET_S3_BUCKET、QUESTIONNAIRE_ASSET_S3_REGION(互換サービスは QUESTIONNAIRE_ASSET_S3_SERVICEURL、QUESTIONNAIRE_ASSET_S3_FORCEPATHSTYLE)

資産は常にアプリが読み出して配信するので、コンテナーやバケットは公開しません。DB 以外を選ぶと、バックアップの対象が増えます。外部保存を始めたあとに DB 保存へ戻す自動移行はないので、運用中の保存先は固定します。

Pleasanter のログインで管理画面へ入る v0.7.0 以降 ​

Pleasanter にログインしている人が、そのままアプリの管理画面へ入れるようにします。既定は無効で、Pleasanter 側に準備は要りません(標準の API users/get で本人を確かめます)。

  • アプリと Pleasanter を同じホスト名で動かし、アプリをサブパスに置きます。 Pleasanter の cookie はホスト名単位でしか届かないためです。Pleasanter は / のままにします。
  • 設定は QUESTIONNAIRE_PLEASANTERSSO_*(ENABLED・INTERNALBASEURL・LOGINURL など)か、管理画面の「Pleasanter ログイン設定」で行います。有効にするときは INTERNALBASEURL(アプリのサーバから Pleasanter へ問い合わせる URL)と LOGINURL が要ります。
  • 未登録の利用者は、既定で拒否です(UNKNOWNUSER=Reject)。Register にすると、その場で登録します(既定の役割は Editor)。
  • v0.9.0 以降は、許可する組織・グループ(QUESTIONNAIRE_PLEASANTERSSO_ALLOWEDDEPTIDS・QUESTIONNAIRE_PLEASANTERSSO_ALLOWEDGROUPIDS)で、所属による制限ができます。両方が未設定のとき、自動登録は拒否されます。 許可先を指定すると、登録済みの利用者にも制限が掛かります。
  • 既定で 5 分ごとに Pleasanter へ本人を確かめ直し、Pleasanter でログアウトされた人は、アプリからも落とします。
  • 設定の保存先としてマイグレーション M0032 と M0033 が要ります(自動適用なら、起動時に当たります)。

ClamAV の監視 v0.8.0 以降 ​

ClamAV でウイルス検査をしている環境では、検査できない状態と復旧を、管理画面のお知らせとサーバログへ記録します。追加の設定は要りません。監視の状態はインスタンスごとに持ち、再起動で初回判定へ戻ります。Defender for Storage は対象外です。

初回の DB 作成(マイグレーション) ​

自動適用が有効なら、空の DB に向けて起動するだけで作られます。手動で適用するときは、配置した DLL を使います。

text
# 未適用のものを表示するだけ(未適用があれば終了コード 1)
dotnet ./VehicleVision.PleasanterTools.Questionnaire.Web.dll --migrate-status

# DB の起動を最大 180 秒待ってから、未適用のものを前方適用する
dotnet ./VehicleVision.PleasanterTools.Questionnaire.Web.dll --migrate --wait-for-db=180

適用のあとにもう一度 --migrate-status を実行し、終了コード 0(適用済み)を確認します。終了コードは 0 が適用済み、1 が未適用あり、2 が DB へ繋がらない、です。出力は英語です(v0.2.0 から。Kudu の Debug console で日本語が化けるため)。マイグレーション用の接続文字列は、一時的にそのプロセスだけの環境変数として与えます。

Azure App Service に導入する ​

添付ファイルを受け付けるなら、導入方式を決める前に、ウイルス検査の置き場を確認します。ClamAV のサイドカーを使える Linux Web App を推奨します。Windows Web App でもアプリは動きますが、サイドカーを使えないので、添付を扱うには別の場所の clamd か Defender for Storage が要ります。

Web App を作る ​

  1. プリザンターと同じ App Service プラン(または要件に合う別のプラン)に、アプリ専用の Linux Web App を作ります。プリザンターの Web App へ上書きしません。
  2. ランタイムスタックを DOTNETCORE:10.0(.NET 10)にします。
  3. HTTPS のみを有効にします。
  4. 常駐する送信ワーカーを止めないよう、Always On を有効にします。
  5. Health check のパスは /healthz にします。/ready にしてはいけません。 App Service の Health check は再起動の判断に使われるので、DB の障害のたびに再起動を繰り返してしまいます。
  6. カスタムドメインと証明書を設定します。
bash
az webapp config set \
  --resource-group <resource-group> \
  --name <app-name> \
  --linux-fx-version "DOTNETCORE|10.0"

Windows Web App を選ぶときは、OS を Windows、ランタイムを .NET 10 にして、3〜6 は同じです。

/healthz はプロセスの生存だけを返し、DB に繋がらなくても ok を返します。 アプリ専用 DB への接続は /ready で確認します(だめなら 503。プリザンターは見ません。プリザンターが落ちても、回答は DB に積んでおいて再送できるためです)。

アプリ設定と配置 ​

必須の環境変数を、Web App の環境変数に登録します。秘密は、できれば Key Vault の参照にします。次の 5 つはデプロイスロットの設定にして、スワップで別環境の値と入れ替わらないようにします。

  • QUESTIONNAIRE_DB_CONNECTIONSTRING
  • QUESTIONNAIRE_PLEASANTER_BASEURL
  • QUESTIONNAIRE_PLEASANTER_APIKEY
  • QUESTIONNAIRE_PLEASANTER_TIMEZONE
  • QUESTIONNAIRE_SECRET_KEY

日本時間で動かすなら、OS に合う設定だけを入れます。Windows のタイムゾーン ID を Linux の TZ に入れても効きません。

OS設定
LinuxTZ=Asia/Tokyo
WindowsWEBSITE_TIME_ZONE=Tokyo Standard Time

設定値を CLI の引数に直接書くと、シェルの履歴や操作ログに秘密が残ります。portal、Key Vault の参照、秘密を守れる CI/CD から登録してください。

配置用 ZIP は展開せずに ZIP デプロイします。

powershell
az webapp deploy `
    --resource-group "<リソースグループ>" `
    --name "<Web App名>" `
    --src-path ".\VehicleVision.PleasanterTools.Questionnaire-X.Y.Z-portable.zip"

自動適用を無効にしている場合は、Kudu の Debug console で配置先(Linux は /home/site/wwwroot、Windows は D:\home\site\wwwroot)へ移動して --migrate と --migrate-status を実行し、終わったら Web App を再起動します。

更新する ​

リポジトリには、Windows Web App 向けの更新スクリプトがあります(運用端末や CI から行う Upgrade-AzureWebApp.ps1<v0.2.0 以降>と、Kudu の中で行う Upgrade-InKudu.ps1<v0.3.0 以降>)。どちらも Windows Web App 専用です。Linux には使えません。 v0.10.0 の ZIP は名前が -portable.zip に変わったので、v0.10.0 のスクリプトを使います(v0.9.3 までのスクリプトは旧名を探します)。Linux Web App は、上の az webapp deploy、Kudu でのマイグレーション、再起動、動作確認を、メンテナンス時間内に手でやります。

AKS に導入する v0.1.0 以降 ​

リポジトリの deploy/aks/questionnaire に Helm チャートがあります。手順は、リポジトリの _documents/AKS-導入更新運用手順書.md にあります。サブパス・Pleasanter SSO・起動時マイグレーションの値と、Ingress のパス指定は、チャート 0.2.0(v0.7.1)から入っています。ConfigMap を変えると Pod がローリング更新されます。Ingress では、サブパスの接頭辞を剥がさないでください。 この版では、AKS 実機での Ingress の振り分けと SSO の往復は確かめていません(v0.7.1 のリリースノート)。

オンプレミス IIS に導入する ​

  1. IIS の Web Server 役割を追加し、そのあとで .NET 10 Hosting Bundle を入れます(逆の順なら修復インストール)。必要なら IIS かサーバーを再起動し、dotnet --list-runtimes に Microsoft.AspNetCore.App 10. が出ることを確認します。

  2. 専用サイトとアプリケーションプールを作ります。

    項目設定例
    サイト名Questionnaire
    アプリケーションプールQuestionnairePool
    .NET CLR versionNo Managed Code
    Managed pipeline modeIntegrated
    Enable 32-Bit ApplicationsFalse
    物理パスC:\inetpub\Questionnaire\current
    バインド組織の DNS 名、HTTPS 443、正式な証明書

    プリザンターと同じサイトのサブアプリケーション(/questionnaire)として置くときは、アプリケーションプールをプリザンターと分けます。

  3. アプリケーションプールの ID に、配置先フォルダーの「読み取りと実行」を与えます。アプリは通常、配置先には書き込みません。

  4. 必須の環境変数は、QuestionnairePool 専用の環境変数として登録します(IIS Manager の Configuration Editor で system.applicationHost/applicationPools の environmentVariables)。資格情報を web.config へ直書きしません。

  5. ZIP はバージョンごとのフォルダー(例 C:\inetpub\Questionnaire\releases\X.Y.Z)に展開します。ZIP 自体を IIS の物理パスに置きません。マイグレーションを適用したあと、サイトの物理パスをそのフォルダーに向けて開始します。

IIS で更新する ​

  1. リリースの説明を確認し、ZIP の SHA-256 を確認します。
  2. 新しいバージョンを新しい releases\X.Y.Z に展開します。稼働中のフォルダーへは上書きしません(DLL が新旧混在した状態で再起動することがあるため)。
  3. DB をバックアップし、復元の手順を確認します。
  4. IIS のサイトを止めて、回答の受付を止めます。
  5. 新しいバージョンの DLL で --migrate-status、--migrate、もう一度 --migrate-status を実行します。
  6. サイトの物理パスを新しいバージョンのフォルダーへ切り替え、アプリケーションプールとサイトを開始して、動作確認をします。

移行後のスキーマと旧バージョンの互換性が保証されていなければ、旧バージョンのフォルダーへ戻すだけでは足りません。移行の直前の DB バックアップも復元してください。

動作確認 ​

powershell
$baseUrl = "https://<アプリのホスト名>"
Invoke-RestMethod "$baseUrl/healthz"   # プロセスの生存
Invoke-RestMethod "$baseUrl/ready"     # アプリ専用 DB へ繋がるか

/ready まで確認してください。見ないと、DB の設定を取り違えた配置が「成功」で終わります。続けて、人が次を確かめます。

  • /admin が表示され、最初の管理者を登録できる(登録済みなら、ログインできる)
  • テスト用のアンケートを表示できる
  • テストの回答が、アプリの送信待ちを経てプリザンターに登録される
  • 管理画面の未送信の件数が、増え続けていない
  • ログに資格情報や回答の本文が出ていない

障害時の切り分け ​

症状最初に確認すること
HTTP Error 500.30環境変数の不足、DB 接続の暗号化条件、未適用のマイグレーション、イベントログ
HTTP Error 500.31.NET 10 Hosting Bundle、または App Service のランタイムスタック
The database schema is out of date新しいバージョンの DLL で --migrate-status を実行し、未適用の一覧を見る
DB に繋がらないDB 名、DNS、ファイアウォール、TLS 証明書、実行ユーザーの権限
画面が 404 か空wwwroot/index.html と wwwroot/admin.html があるか。サブパス配置なら QUESTIONNAIRE_PATH_BASE と、プロキシがプレフィックスを残しているか
HTTP Error 500.35同じアプリケーションプールに、ASP.NET Core のインプロセスのアプリが 2 つある。プールを分けるか OutOfProcess にする
回答は受け付けるがプリザンターに届かないプリザンターの URL、API キー、そのユーザーの権限、管理画面のバックログと知らせ
再送が進まないApp Service の Always On、IIS のアプリケーションプールの停止・アイドル設定
HTTPS へのリダイレクトが続くリバースプロキシの X-Forwarded-Proto と、HTTPS バインド
/admin.html が 404仕様(v0.7.0 から)。管理画面は QUESTIONNAIRE_ADMIN_PATH(既定 /admin)から開く

ログや問い合わせに、接続文字列・API キー・回答の本文を貼らないでください。伝えるのは、バージョン・DBMS・終了コード・未適用のマイグレーション名・HTTP ステータスです。

関連ページ ​

変更履歴

第3版ツールのマニュアルをツール別の独立した構成にし、変更履歴とバージョン別の機能差を追加した
第2版ツールの取扱説明で、カタカナで通じる用語(バージョン・ユーザー・フォント・リダイレクト URI など)を日本語に直しすぎないよう修正
第1版Web アンケートアプリの導入と設定のページを追加