Configuration Overview
The DonaSF API uses multiple configuration sources to manage application settings:- appsettings.json: Main configuration file for JWT and email settings
- Conf.txt: Database connection string in custom format
- Environment variables: Override settings for different environments
Database Configuration
Connection String Format
The application uses a custom connection string format stored inConf.txt:
Configuration Details
Connection File Location
Connection File Location
The Production:
Conf.txt file must be located in the same directory as the application executable:Development:Connection String Examples
Connection String Examples
SQL Server with Named Instance:SQL Server Default Instance:Localhost Development:Azure SQL Database:
Connection Security
Connection Security
The application automatically appends
TrustServerCertificate=true to all connections:This setting is required for SQL Server 2019+ to accept self-signed certificates
Multiple Databases
Multiple Databases
The application connects to two main databases:
- WSPaqueteria: Package management and client data
- WSDonaciones: Donations and verification codes
Conf.txt matches your primary database. The application will access both databases using the same credentials.JWT Authentication
JSON Web Token (JWT) configuration for API authentication and authorization.Configuration in appsettings.json
appsettings.json
Configuration Options
Secret key used to sign and validate JWT tokensRequirements:
- Minimum 32 characters (256 bits)
- Use strong, random characters
- Include letters, numbers, and special characters
- Never commit production keys to version control
Token expiration time in secondsCommon values:
3600- 1 hour (recommended for production)7200- 2 hours86400- 24 hours (development only)
JWT Token Validation
The API validates tokens with the following parameters:Program.cs:22-29
Issuer and Audience validation are disabled. Only lifetime and signing key are validated.
Generating Secure Keys
Generate a secure JWT key using PowerShell or Bash:Email Configuration
Configure email addresses for system notifications and communications.Configuration in appsettings.json
appsettings.json
Email Settings
Primary email address for system notifications
Secondary email address for notifications
Tertiary email address for notifications
These email addresses are injected via dependency injection using
IOptions<CorreosElectronicos>Twilio Configuration (Optional)
The application includes Twilio SDK for SMS notifications (currently commented out in code).Adding Twilio Support
If you want to enable SMS functionality:- Add Twilio configuration to
appsettings.json:
appsettings.json
- Uncomment and update the Twilio code in
BCliente.cs:139-145:
Logging Configuration
Configure application logging levels:appsettings.json
Log Levels
Most detailed logs. May include sensitive data. Never enable in production.
Detailed logs for development debugging.
General application flow information. Recommended for production.
Unexpected events that don’t stop execution.
Errors and exceptions that need attention.
Critical failures requiring immediate attention.
Environment-Specific Configuration
Development Settings
Createappsettings.Development.json for development-only settings:
appsettings.Development.json
Production Settings
Createappsettings.Production.json for production settings:
appsettings.Production.json
Allowed Hosts
Configure which hosts can access the API:Static Files Configuration
The application serves static files from multiple locations:Program.cs:83-106
Image Storage Configuration
Product images path is configured in the database:Cat_Parametro table.
Configuration Best Practices
Security
- Never commit sensitive data to version control
- Use environment variables for secrets in production
- Rotate JWT keys regularly
- Use strong, unique passwords
Environment Variables
Override settings using environment variables:
Configuration Hierarchy
Settings are loaded in order (later overrides earlier):
- appsettings.json
- appsettings..json
- Environment variables
- Command-line arguments
Validation
Validate configuration on startup:
- Check JWT key length
- Verify database connectivity
- Test email configuration
- Validate required settings exist
Next Steps
Setup Guide
Return to the development setup guide
Deployment
Learn how to deploy your configured application