2012-03-25 11 views

risposta

11

Le impostazioni con ambito utente non sono supportate per un'applicazione Web. E non funzionerebbero, le impostazioni dell'utente dovrebbero essere salvate nella cartella Users\<username>\... sul server.

avrete una vasta scelta di tecniche web:

  • cookies persistenti
  • ASP.NET appartenenza Profili
  • il proprio Db
2

È possibile effettuare le impostazioni portata di applicazione scrivibile semplicemente aggiunta di un setter alla definizione della proprietà in Settings.Designer.cs. Per esempio:

[global::System.Configuration.ApplicationScopedSettingAttribute()] 
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
[global::System.Configuration.DefaultSettingValueAttribute("AdminContext")] 
public string DbContext 
{ 
    get { return ((string)(this["DbContext"])); } 
    set { this["DbContext"] = value; } } 

L'avvertenza è che il Settings.Designer.cs è auto-generata, e quindi se si utilizza l'interfaccia utente di design, i tuoi setter vengono sovrascritti.

Funziona su console e applicazioni Web.

+0

Anche se questa non è la migliore pratica, * non * lavoro ed è completamente testato. Dato che ritengo che l'approccio nel corpo, non credo sia valido per dare un voto negativo. Questa soluzione è "usa a proprio rischio" ma tuttavia * è * una soluzione. – Shane

+0

*** Impostazioni.Designer.cs è generato automaticamente ***. Soluzione non buona –

14

Quando ho avuto questo problema, è risultato che avevo un riferimento a una DLL che aveva un file Settings.settings (o Settings.Designer.cs).

Ciò che accade è che quando si modifica il file Setting.settings, dopo aver fatto clic sulla riga vuota in basso, viene aggiunta una nuova riga con le informazioni sul modello e un'impostazione utente predefinita invece delle impostazioni dell'applicazione. Questa è una bella funzionalità, ma è possibile vedere come dopo aver modificato il modello e aggiunto le nuove impostazioni, quindi facendo clic in basso per perdere il focus, viene aggiunta una nuova riga di modello e, se non si presta attenzione, si aggiunge accidentalmente un'impostazione utente. Controlla se hai questo file in una dll di riferimento e rimuovi le impostazioni utente.

enter image description here