In qualsiasi situazione in cui le informazioni debbano essere inserite in una parte di un'app, ricorda il principio "tell, do not ask".
Se passi la configurazione direttamente nel livello della business logic, allora stai creando un accoppiamento tra i due. Diventa difficile modificare la configurazione senza rompere il livello della logica aziendale. Inoltre, è possibile creare la necessità di dover simulare la configurazione a scopo di test.
Tuttavia, dovendo passare i singoli valori di configurazione come parametri in ogni chiamata di metodo del livello aziendale dal livello web, si creano altri problemi. Aggiunge ulteriore complessità a tali firme e cerimonie di metodo per utilizzarli e richiede inoltre di esporre tutta la configurazione a tutto il livello web. Ancora una volta, ricorda "tell, do not ask": le parti del livello web dovrebbero essere informate solo su quegli aspetti della configurazione di cui hanno bisogno di sapere.
Quindi suggerirei un terzo approccio. Inietta i valori di configurazione richiesti da ogni classe all'interno del livello della logica aziendale, come parametri per i loro costruttori. In questo modo diventa responsabilità del tuo framework IoC, se ne stai utilizzando uno (o il tuo codice di mapping delle dipendenze all'avvio dell'app se stai utilizzando puro DI) per instradare i singoli valori solo per quelle classi che ne hanno bisogno.