Software Development Kit (SDK) and API Discussions

NMSDK 5.1 - .NET UserScopedSettings vs. ApplicationScopedSettings

austin_workman

I am able to build console applications using the API fine, but trying to write a web service using ASP.NET Web API in C# that returns json/xml I've run into trouble with the way the PersistentSettings class is trying to store settings as User-Scoped vs. ApplicationScoped.  I tried to create a function that loops through the setting properties attributes and removes the UserScoped spec and adds the Application scoped spec, I've tried clearing the settings all together and saving them, all to no avail.

Any pointers to get me moving in the right direction?

5 REPLIES 5

austin_workman

public class netappController : ApiController

    {

        public string getVol()

        {

            NaFiler na;

            na = new NaFiler("filer.fqdn.com");

            na.Credentials = new NetworkCredential("user","password");

            na.Protocol = NetApp.ServerProtocol.HTTPS;

             //Start of attempt at fixing

            NetApp.PersistentSettings set = new NetApp.PersistentSettings();

            SettingsPropertyCollection col = set.Properties;

            foreach(SettingsProperty prop in col)

            {

                //prop.Attributes.Clear();

                prop.Attributes.Remove(typeof(UserScopedSettingAttribute));

                prop.Attributes.Add(typeof(ApplicationScopedSettingAttribute), new ApplicationScopedSettingAttribute());

            }

            set.Save();

            set.Reload();

            //End of attempt at fixing

            NetApp.Filer.Volume.VolumeGetFilerInfo input = new NetApp.Filer.Volume.VolumeGetFilerInfo();

            NetApp.Filer.Volume.VolumeGetFilerInfoResult data = input.Invoke(na);

            return "not working yet";

        }

    }

The same class works in a console application without the section of code to try and fix the settings scope.

This Code has a little but important bug. You have to manipulate the default instance:

   // Fixing problem with user-scoped settings
   PersistentSettings set = PersistentSettings.Default;
   SettingsPropertyCollection col = set.Properties;
   foreach(SettingsProperty prop in col)
   {
   prop.Attributes.Remove(typeof(UserScopedSettingAttribute));
   prop.Attributes.Add(typeof(ApplicationScopedSettingAttribute), new ApplicationScopedSettingAttribute());
   }

   NaFiler server = new NaFiler(ADDRESS);
   server.Credentials = new NetworkCredential(USER, PWD);

Thanks Patrick this really helped me out!

austin_workman

I didn't realize there were two different versions of the .net SDK bindings.  The newer version(i'm assuming as it has more complete type info) is less feature complete it seems, as it doesn't support RPC login without a password as well as having the user-scoped settings limitation.  I have switched to using the ManageOntap.dll and haven't had any issues.

dhivya

We are investigating on changing the default scope. We will get back to you on this.

Announcements
NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner
Public