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 isinternal
.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.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