Web アンケートアプリの導入と設定
プリザンターをバックエンドにした 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
| DBMS | QUESTIONNAIRE_DB_PROVIDER |
|---|---|
| SQL Server / Azure SQL Database | SqlServer |
| PostgreSQL | PostgreSql |
| MySQL | MySql |
| 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 を確認します。
$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)は含まれません。
VehicleVision.PleasanterTools.Questionnaire.Web.dll
web.config
wwwroot/index.html
wwwroot/admin.html
App_Data/Parameters/README.mdweb.config は IIS 用で、Linux では使われませんが、同じ ZIP を Windows の Web App と IIS にも配るため入っています(消さないでください)。
必須の設定
次を環境変数で与えます。資格情報を appsettings.json・配置用 ZIP・ソース管理に書かないでください。
| 設定 | 内容 |
|---|---|
ASPNETCORE_ENVIRONMENT | Production |
QUESTIONNAIRE_DB_PROVIDER | SqlServer / 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_TIMEZONE | API キーのユーザーのタイムゾーン。日本なら Asia/Tokyo |
QUESTIONNAIRE_SECRET_KEY | 32 バイトの乱数を Base64 にしたもの。失うと、登録済みの 2 要素認証が使えなくなる |
秘密鍵は、配置用 ZIP の DLL で作れます。標準出力に 1 回だけ出るので、そのまま秘密情報の管理場所へ登録し、平文のファイルに残さないでください。更新のたびに作り直さず、同じ環境では同じ値を使い続けます。
dotnet .\VehicleVision.PleasanterTools.Questionnaire.Web.dll --generate-secret-keyDB 接続は暗号化が必須
接続の暗号化と、接続先の証明書の検証が必須です。
| DBMS | 本番接続の要点 |
|---|---|
| SQL Server | Encrypt=True;TrustServerCertificate=False |
| PostgreSQL | Ssl Mode=VerifyCA または VerifyFull |
| MySQL | SslMode=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 | 管理画面の入口。英小文字・数字・ハイフンだけ。外部設定だけで指定し、変更には再起動が要る | /admin | v0.6.0 |
QUESTIONNAIRE_ADMIN_PASSWORD_SIGNIN | SAML か Pleasanter のログインが有効なときに、合言葉ログインを許可するか。外部設定だけ | true | v0.6.0 |
QUESTIONNAIRE_ADMIN_RESCUE_TOKEN | 合言葉ログインを塞いだときの救済トークン(32 文字以上)。外部設定だけ | 未設定 | v0.6.0 |
QUESTIONNAIRE_PATH_BASE | サブパスに置くときのプレフィックス(例 /questionnaire)。末尾の / は付けない | 未設定(/) | v0.7.0 |
QUESTIONNAIRE_ADMIN_TWOFACTOR | 管理者の 2 要素認証。required・optional・disabled | optional | v0.1.0 |
QUESTIONNAIRE_ALLOW_INSECURE | HTTPS へのリダイレクトと HSTS を緩める(開発・閉域用) | false | v0.3.0 |
QUESTIONNAIRE_EMBED_ALLOWEDHOSTS | 設問の中の埋め込みコンテンツを許す配信元ホスト | 未設定 | v0.1.0 |
QUESTIONNAIRE_EMBED_ALLOWEDPARENTS | 回答画面を iframe で埋め込める親サイト | 未設定 | v0.4.0 |
QUESTIONNAIRE_ASSET_STORE | 配布アセットの保存先(Database・Path・AzureBlob・S3) | Database | v0.3.0 |
QUESTIONNAIRE_MAINTENANCE_MODE | true で全体の回答受付を止める(環境変数で止めると、画面から解除できない) | 未設定 | v0.4.0 |
QUESTIONNAIRE_BACKLOG_PER_SURVEY | アンケートごとに送信待ちにできる回答数の上限 | 10000 | v0.1.0 |
QUESTIONNAIRE_BACKLOG_TOTAL | 全アンケート合計の送信待ちの上限 | 50000 | v0.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_ENABLED | true で有効。既定は 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・_PASSWORD | SMTP の接続。ポートの既定は 587、_SECURITY は StartTls(既定)・ImplicitTls・None |
QUESTIONNAIRE_MAIL_SES_REGION | Amazon SES のリージョン(資格情報は IAM ロールから) |
QUESTIONNAIRE_MAIL_ACS_ENDPOINT | Azure 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(複数インスタンスでは共有ディレクトリ) |
AzureBlob | Azure Blob Storage | QUESTIONNAIRE_ASSET_AZURE_CONTAINERURI(マネージド ID)。使えなければ QUESTIONNAIRE_ASSET_AZURE_CONNECTIONSTRING と QUESTIONNAIRE_ASSET_AZURE_CONTAINERNAME |
S3 | Amazon 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 を使います。
# 未適用のものを表示するだけ(未適用があれば終了コード 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 を作る
- プリザンターと同じ App Service プラン(または要件に合う別のプラン)に、アプリ専用の Linux Web App を作ります。プリザンターの Web App へ上書きしません。
- ランタイムスタックを
DOTNETCORE:10.0(.NET 10)にします。 - HTTPS のみを有効にします。
- 常駐する送信ワーカーを止めないよう、Always On を有効にします。
- Health check のパスは
/healthzにします。/readyにしてはいけません。 App Service の Health check は再起動の判断に使われるので、DB の障害のたびに再起動を繰り返してしまいます。 - カスタムドメインと証明書を設定します。
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_CONNECTIONSTRINGQUESTIONNAIRE_PLEASANTER_BASEURLQUESTIONNAIRE_PLEASANTER_APIKEYQUESTIONNAIRE_PLEASANTER_TIMEZONEQUESTIONNAIRE_SECRET_KEY
日本時間で動かすなら、OS に合う設定だけを入れます。Windows のタイムゾーン ID を Linux の TZ に入れても効きません。
| OS | 設定 |
|---|---|
| Linux | TZ=Asia/Tokyo |
| Windows | WEBSITE_TIME_ZONE=Tokyo Standard Time |
設定値を CLI の引数に直接書くと、シェルの履歴や操作ログに秘密が残ります。portal、Key Vault の参照、秘密を守れる CI/CD から登録してください。
配置用 ZIP は展開せずに ZIP デプロイします。
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 に導入する
IIS の Web Server 役割を追加し、そのあとで .NET 10 Hosting Bundle を入れます(逆の順なら修復インストール)。必要なら IIS かサーバーを再起動し、
dotnet --list-runtimesにMicrosoft.AspNetCore.App 10.が出ることを確認します。専用サイトとアプリケーションプールを作ります。
項目 設定例 サイト名 Questionnaireアプリケーションプール QuestionnairePool.NET CLR version No Managed Code Managed pipeline mode Integrated Enable 32-Bit Applications False 物理パス C:\inetpub\Questionnaire\currentバインド 組織の DNS 名、HTTPS 443、正式な証明書 プリザンターと同じサイトのサブアプリケーション(
/questionnaire)として置くときは、アプリケーションプールをプリザンターと分けます。アプリケーションプールの ID に、配置先フォルダーの「読み取りと実行」を与えます。アプリは通常、配置先には書き込みません。
必須の環境変数は、
QuestionnairePool専用の環境変数として登録します(IIS Manager の Configuration Editor でsystem.applicationHost/applicationPoolsのenvironmentVariables)。資格情報をweb.configへ直書きしません。ZIP はバージョンごとのフォルダー(例
C:\inetpub\Questionnaire\releases\X.Y.Z)に展開します。ZIP 自体を IIS の物理パスに置きません。マイグレーションを適用したあと、サイトの物理パスをそのフォルダーに向けて開始します。
IIS で更新する
- リリースの説明を確認し、ZIP の SHA-256 を確認します。
- 新しいバージョンを新しい
releases\X.Y.Zに展開します。稼働中のフォルダーへは上書きしません(DLL が新旧混在した状態で再起動することがあるため)。 - DB をバックアップし、復元の手順を確認します。
- IIS のサイトを止めて、回答の受付を止めます。
- 新しいバージョンの DLL で
--migrate-status、--migrate、もう一度--migrate-statusを実行します。 - サイトの物理パスを新しいバージョンのフォルダーへ切り替え、アプリケーションプールとサイトを開始して、動作確認をします。
移行後のスキーマと旧バージョンの互換性が保証されていなければ、旧バージョンのフォルダーへ戻すだけでは足りません。移行の直前の DB バックアップも復元してください。
動作確認
$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 ステータスです。
関連ページ
- プリザンターをバックエンドにした Web アンケート — 構成と設計判断
- Web アンケートアプリの使い方 — アンケートの作成から公開、運用まで
- Web アンケートアプリの概要とバージョン別の機能差 — どの機能がどの版から使えるか
- Web アンケートアプリの変更履歴 — 版ごとの変更と更新時の作業