# System.InvalidOperationException：连接字符串 'DefaultConnection' 格式无效。预期格式：'Server=tcp:...;Database=...;User ID=...;Password=...;'

- **ID:** `cloud/azure-app-service-connection-string-format`
- **领域:** cloud
- **类别:** config_error
- **验证级别:** ai_generated
- **修复率:** 92%

## 根因

Azure App Service 应用设置中存储的连接字符串通常语法错误（例如缺少分号、键名错误或对 SQL 数据库使用了非 SQL Server 格式）。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Azure App Service Windows | active | — | — |
| Azure App Service Linux | active | — | — |
| .NET 8 | active | — | — |

## 解决方案

1. ```
   在应用设置中使用适用于 Azure SQL 数据库的正确格式：Server=tcp:<server>.database.windows.net,1433;Database=<db>;User ID=<user>@<server>;Password=<password>;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
   ```
2. ```
   从 Azure 门户获取连接字符串：转到 SQL 数据库 -> 连接字符串 -> ADO.NET，复制确切字符串并粘贴到应用服务的 '连接字符串' 部分，类型选择 'SQLAzure'。
   ```
3. ```
   使用正确的语法引用 Key Vault：@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/myconnectionstring/)。确保应用服务在保管库上具有 'Key Vault Secrets User' 角色。
   ```

## 无效尝试

- **** — Adding extra quotes around the connection string in app settings causes parsing errors. (95% 失败率)
- **** — Using Key Vault references without proper syntax like @Microsoft.KeyVault(SecretUri=...) results in the raw reference string being used as the connection string. (80% 失败率)
- **** — Copying a connection string from SQL Server Management Studio that includes 'Trusted_Connection=True' fails because Azure SQL requires SQL authentication. (85% 失败率)
