2015-12-16 35 views
5

Mam następujący plik w moim folderze App_CodeUtilities.CS jako metody „pomocnika” używany w mojej aplikacji MVC4 (Build działania ustawiony na kompilacji)„Ustawienia” jest niedostępne ze względu na jego poziom ochrony

Jest break-point Aplikacja poda kod ...

Aplikacja kompiluje (Ctrl-Shift-B) bez błędów, ale po uruchomieniu aplikacji otrzymuję CS0122: 'Settings' is inaccessible due to its protection level w kolejnym oświadczeniu return po punkcie przerwania.

Ustawienie AdminGroup jest zdefiniowany jako public w kreatorze Ustawienia

nigdy Linia break-point dostanie, prawdopodobnie ze względu na run-time error kompilacja ... ale jeśli mam skompilowane go, dlaczego jest tak, ponownej kompilacji w czasie wykonywania?

(Przepraszam, jestem nowy do MVC więc nie bardzo wiadomo o co chodzi)

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

Pokaż kod dla 'Properties'. Kliknij "Właściwości" i naciśnij "F12" –

+0

Czy możesz "Klasa" właściwości? – Kamo

Odpowiedz

16

Ten błąd jest z powodu Settings klasa jest internal.

Założono, że utworzyłeś i zmodyfikowałeś ustawienia z ustawień sekcji właściwości projektu w studiu graficznym. Right click on project > Properties > Settings. Istnieje rozwijane menu o nazwie Modyfikator dostępu, które należy zmienić z wewnętrznego na publiczne.

enter image description here

Więcej informacji na temat słów kluczowych wewnętrznego: 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 .... Zastrzel mnie teraz .... Jak do diabła nie widziałem tego .... Być może dlatego, że mój dysk twardy umierał i wychodził powodując różne inne problemy ,, Dzięki i przepraszam za marnowanie czasu –

+0

witamy @ChrisHammond –

+3

Wielkie dzięki! Spędziłem około godziny próbując dowiedzieć się, co robię źle. – SwiftHanded