2015-12-16 38 views
5

Ho il Utilities.CS seguente file nella mia cartella App_Code come metodi "helper" utilizzati in tutta la mia domanda MVC4 (Build azione impostato per la compilazione)'Impostazioni' è inaccessibile a causa del livello di protezione

C'è un break-point nel codice come indicato ...

L'applicazione compila (Ctrl-Shift-B) senza errori ma quando eseguo l'applicazione ottengo unsuccessivo al break-point.

L'impostazione AdminGroup è definito come public in Progettazione Impostazioni

La linea di break-point non viene colpito, probabilmente a causa di runtime errore di compilazione ... ma se ho compilato esso, perché è ricompilare a run-time?

(Scusate, sono nuovo a MVC quindi non veramente sicuro quello che sta succedendo)

namespace MyApplication 
{ 
    public class Utilities 
    { 
     public static string UserID 
     { 
      get 
      { 
       return Regex.Replace(WindowsIdentity.GetCurrent().Name, @".+\\", "").ToUpper(); 
      } 
     } 

     public static bool IsAdmin 
     { 
      get 
      { 
       System.Diagnostics.Debug.WriteLine("Break point on this line"); 
       return (HttpContext.Current.User.IsInRole(Properties.Settings.Default.AdminGroup)); 
      } 
     } 
    } 

} 

UPDATE

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated by a tool. 
//  Runtime Version:4.0.30319.42000 
// 
//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace MyApplication.Properties { 


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 

     private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 

     public static Settings Default { 
      get { 
       return defaultInstance; 
      } 
     } 

    // 
    // Other Settings Removed 
    // 

     [global::System.Configuration.ApplicationScopedSettingAttribute()] 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
     [global::System.Configuration.DefaultSettingValueAttribute("MYDOMAIN\\ADMINGROUP")] 
     public string AdminGroup { 
      get { 
       return ((string)(this["AdminGroup"])); 
      } 
     } 
    } 
} 
+0

Visualizza codice per 'Properties'. Clicca su 'Proprietà' e premi' F12' –

+0

Puoi 'Proprietà' class? – Kamo

risposta

16

Questo errore è dovuto al fatto di Settings classe è internal.

Suppongo che tu abbia creato e modificato le impostazioni dalle impostazioni della sezione delle proprietà del progetto di Visual Studio. Right click on project > Properties > Settings. C'è un menu a discesa chiamato Modificatore di accesso che è necessario modificare da interno a pubblico.

enter image description here

Per ulteriori informazioni sulla parola chiave interna: The internal keyword is an access modifier for types and type members. Internal types or members are accessible only within files in the same assembly

+2

OMG .... Spara a me ora .... Come diavolo non l'ho visto .... Potrebbe essere stato perché il mio HDD stava morendo e uscendo causando ogni sorta di altri problemi, Grazie e scusa per sprecare il tuo tempo –

+0

benvenuto @ChrisHammond –

+3

Grazie mille! Ho passato circa un'ora cercando di capire cosa sto sbagliando. – SwiftHanded