Skip to content

Commit f04e8da

Browse files
DangDang
authored andcommitted
Fix environment variable mapping for Render.com deployment
- Handle both underscore and double-underscore formats for environment variables - Add debug logging to show which environment variables are found - Support Render.com's ConnectionStrings__MongoDB format - Support Render.com's Jwt__Key, Jwt__Issuer, Jwt__Audience formats - Support Render.com's EmailSettings__ and CloudinarySettings__ formats - Resolve configuration loading issues in production deployment
1 parent 121d939 commit f04e8da

File tree

1 file changed

+38
-13
lines changed

1 file changed

+38
-13
lines changed

VehicleShowroomManagement/src/WebAPI/Program.cs

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,73 +45,98 @@
4545
// Add environment variables to configuration
4646
builder.Configuration.AddEnvironmentVariables();
4747

48-
// Map environment variables to configuration keys
49-
var mongoConnectionString = Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING");
48+
// Debug: Log all environment variables that start with our prefixes
49+
Log.Information("Checking environment variables...");
50+
var envVars = Environment.GetEnvironmentVariables();
51+
foreach (DictionaryEntry envVar in envVars)
52+
{
53+
var key = envVar.Key.ToString();
54+
if (key.StartsWith("MONGODB_") || key.StartsWith("JWT_") || key.StartsWith("EMAIL_") ||
55+
key.StartsWith("CLOUDINARY_") || key.StartsWith("ConnectionStrings__") ||
56+
key.StartsWith("Jwt__") || key.StartsWith("EmailSettings__") || key.StartsWith("CloudinarySettings__"))
57+
{
58+
Log.Information("Found environment variable: {Key}", key);
59+
}
60+
}
61+
62+
// Map environment variables to configuration keys (handle both formats)
63+
var mongoConnectionString = Environment.GetEnvironmentVariable("MONGODB_CONNECTION_STRING")
64+
?? Environment.GetEnvironmentVariable("ConnectionStrings__MongoDB");
5065
if (!string.IsNullOrWhiteSpace(mongoConnectionString))
5166
{
5267
builder.Configuration["ConnectionStrings:MongoDB"] = mongoConnectionString;
5368
Log.Information("MongoDB connection string loaded from environment variable");
5469
}
5570

56-
var jwtKey = Environment.GetEnvironmentVariable("JWT_KEY");
71+
var jwtKey = Environment.GetEnvironmentVariable("JWT_KEY")
72+
?? Environment.GetEnvironmentVariable("Jwt__Key");
5773
if (!string.IsNullOrWhiteSpace(jwtKey))
5874
{
5975
builder.Configuration["Jwt:Key"] = jwtKey;
6076
Log.Information("JWT Key loaded from environment variable");
6177
}
6278

63-
var jwtIssuer = Environment.GetEnvironmentVariable("JWT_ISSUER");
79+
var jwtIssuer = Environment.GetEnvironmentVariable("JWT_ISSUER")
80+
?? Environment.GetEnvironmentVariable("Jwt__Issuer");
6481
if (!string.IsNullOrWhiteSpace(jwtIssuer))
6582
{
6683
builder.Configuration["Jwt:Issuer"] = jwtIssuer;
6784
Log.Information("JWT Issuer loaded from environment variable");
6885
}
6986

70-
var jwtAudience = Environment.GetEnvironmentVariable("JWT_AUDIENCE");
87+
var jwtAudience = Environment.GetEnvironmentVariable("JWT_AUDIENCE")
88+
?? Environment.GetEnvironmentVariable("Jwt__Audience");
7189
if (!string.IsNullOrWhiteSpace(jwtAudience))
7290
{
7391
builder.Configuration["Jwt:Audience"] = jwtAudience;
7492
Log.Information("JWT Audience loaded from environment variable");
7593
}
7694

77-
// Map other environment variables
78-
var emailHost = Environment.GetEnvironmentVariable("EMAIL_SMTP_HOST");
95+
// Map other environment variables (handle both formats)
96+
var emailHost = Environment.GetEnvironmentVariable("EMAIL_SMTP_HOST")
97+
?? Environment.GetEnvironmentVariable("EmailSettings__SmtpHost");
7998
if (!string.IsNullOrWhiteSpace(emailHost))
8099
{
81100
builder.Configuration["EmailSettings:SmtpHost"] = emailHost;
82101
}
83102

84-
var emailPort = Environment.GetEnvironmentVariable("EMAIL_SMTP_PORT");
103+
var emailPort = Environment.GetEnvironmentVariable("EMAIL_SMTP_PORT")
104+
?? Environment.GetEnvironmentVariable("EmailSettings__SmtpPort");
85105
if (!string.IsNullOrWhiteSpace(emailPort))
86106
{
87107
builder.Configuration["EmailSettings:SmtpPort"] = emailPort;
88108
}
89109

90-
var emailUsername = Environment.GetEnvironmentVariable("EMAIL_SMTP_USERNAME");
110+
var emailUsername = Environment.GetEnvironmentVariable("EMAIL_SMTP_USERNAME")
111+
?? Environment.GetEnvironmentVariable("EmailSettings__SmtpUsername");
91112
if (!string.IsNullOrWhiteSpace(emailUsername))
92113
{
93114
builder.Configuration["EmailSettings:SmtpUsername"] = emailUsername;
94115
}
95116

96-
var emailPassword = Environment.GetEnvironmentVariable("EMAIL_SMTP_PASSWORD");
117+
var emailPassword = Environment.GetEnvironmentVariable("EMAIL_SMTP_PASSWORD")
118+
?? Environment.GetEnvironmentVariable("EmailSettings__SmtpPassword");
97119
if (!string.IsNullOrWhiteSpace(emailPassword))
98120
{
99121
builder.Configuration["EmailSettings:SmtpPassword"] = emailPassword;
100122
}
101123

102-
var cloudinaryCloudName = Environment.GetEnvironmentVariable("CLOUDINARY_CLOUD_NAME");
124+
var cloudinaryCloudName = Environment.GetEnvironmentVariable("CLOUDINARY_CLOUD_NAME")
125+
?? Environment.GetEnvironmentVariable("CloudinarySettings__CloudName");
103126
if (!string.IsNullOrWhiteSpace(cloudinaryCloudName))
104127
{
105128
builder.Configuration["CloudinarySettings:CloudName"] = cloudinaryCloudName;
106129
}
107130

108-
var cloudinaryApiKey = Environment.GetEnvironmentVariable("CLOUDINARY_API_KEY");
131+
var cloudinaryApiKey = Environment.GetEnvironmentVariable("CLOUDINARY_API_KEY")
132+
?? Environment.GetEnvironmentVariable("CloudinarySettings__ApiKey");
109133
if (!string.IsNullOrWhiteSpace(cloudinaryApiKey))
110134
{
111135
builder.Configuration["CloudinarySettings:ApiKey"] = cloudinaryApiKey;
112136
}
113137

114-
var cloudinaryApiSecret = Environment.GetEnvironmentVariable("CLOUDINARY_API_SECRET");
138+
var cloudinaryApiSecret = Environment.GetEnvironmentVariable("CLOUDINARY_API_SECRET")
139+
?? Environment.GetEnvironmentVariable("CloudinarySettings__ApiSecret");
115140
if (!string.IsNullOrWhiteSpace(cloudinaryApiSecret))
116141
{
117142
builder.Configuration["CloudinarySettings:ApiSecret"] = cloudinaryApiSecret;

0 commit comments

Comments
 (0)