C# – ‘Settings’ is inaccessible due to its protection level

access-modifiersasp.net-mvcasp.net-mvc-4cclass

I have the following Utilities.CS file in my App_Code folder as "helper" methods used throughout my MVC4 application (Build Action set to Compile)

There is a break-point in the code as indicated…

The application compiles (Ctrl-Shift-B) with no errors but when I run the application I get a CS0122: 'Settings' is inaccessible due to its protection level at the subsequent return statement after the break-point.

The AdminGroup setting is defined as public in the Settings Designer

The break-point line never gets hit, probably due to run-time compilation error… but if I've compiled it, why is it re-compiling at run-time?

(Sorry, I'm new to MVC so no really sure what's going on)

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"]));
            }
        }
    }
}

Best Answer

This error is because of Settings class is internal.

I assumed that you have created and modified settings from visual studio project properties section settings. Right click on project > Properties > Settings. There is a drop down menu called Access Modifier that you need to change from internal to public.

enter image description here

For more information on internal keyword: 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

Related Topic