1748356771
2025-05-27 00:46:00
私たちは最近、Optimizely CMSを使用して非常にイライラする問題に遭遇しました。最新のNugetパッケージへのアップグレードを試みた後、データのエクスポートはただハングアップします。
サポートに連絡しましたが、AppSettings.jsonでタイムアウト設定を微調整することで、タイムアウトの問題を除外しました。運はありません。
最終的に、より低い環境への最適なサポートアクセスを提供した後、彼らは輸出ポーリングの対応において奇妙な何かを発見しました。JSONはカメルケースの代わりにパスカルケースで返されていました。これが問題のあるJSONがどのように見えるかです:
{
"FileId": "tmpOMsqJV.tmp",
"IsDone": true,
"IsAborting": false,
"IsTest": false,
"ErrorMessages": [],
"WarningMessages": [],
"InfoMessages": ["Export completed without errors or warnings"],
"PageCount": 44,
...
}
クライアント側のJavaScriptは、CamelCase(IsDoneではなくISDONE)を期待していたため、エクスポートが終了したとしても、UIはそれを認識しませんでした。結果?無限のスピナー。
掘り出した後、startup.csでこれを見つけました。
services.AddControllers(
options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true)
.AddJsonOptions(opts => opts.JsonSerializerOptions.PropertyNamingPolicy = null);
PropertyNamingPolicyをNULLに設定すると、JSON出力がC#プロパティケーシング(PASCALCASE)を維持しました。それを変更してjsonnamingpolicy.camelcaseを使用して問題を解決しました。
services.AddControllers(
options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true)
.AddJsonOptions(opts => opts.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase);
それが整ったら、輸出が正しく動作し始めました。もちろん、これが他の場所に副作用を引き起こさないようにするためにより多くのテストを計画していますが、Nugetの更新または構成の変更後に神秘的なエクスポートの問題に遭遇した場合、JSONの命名設定を延期します。グーグルの時間を節約するだけかもしれません。
2025年5月27日
#OptimizelyCMSでエクスポートするときに卑劣なJSONケーシングバグを修正する