The ProfileModule.ProfileAutoSaving event is raised at the end of page execution if the ProfileManager.AutomaticSaveEnabled property is true. You can access the ProfileModule.ProfileAutoSaving event of the System.Web.Profile.ProfileModule class in the Global.asax file for your ASP.NET application using the Profile_ProfileAutoSaving global event, as shown in the example for this topic.
The System.Configuration.SettingsBase.Save method checks the System.Configuration.SettingsPropertyValue.IsDirty property value for each System.Configuration.SettingsPropertyValue in the user profile to determine whether properties that are made up of primitive types, strings, or DateTime objects have been changed. The System.Configuration.SettingsBase.Save method cannot explicitly determine whether a custom class has changed. You can use the ProfileModule.ProfileAutoSaving event to determine whether a custom object has been changed and then either to continue with the automatic save for modified objects or to cancel the automatic save if no objects have been modified.
To cancel the automatic profile save operation, set the ProfileAutoSaveEventArgs.ContinueWithProfileAutoSave property to false in the ProfileModule.ProfileAutoSaving event; otherwise, set the ProfileAutoSaveEventArgs.ContinueWithProfileAutoSave property to true.
There may be multiple subscribers to the ProfileModule.ProfileAutoSaving event. The System.Web.Profile.ProfileModule will use the last value that the ProfileAutoSaveEventArgs.ContinueWithProfileAutoSave property is set to. As a result, it is recommended that you explicitly set the ProfileAutoSaveEventArgs.ContinueWithProfileAutoSave property in the ProfileModule.ProfileAutoSaving event whether you are canceling or continuing with the automatic save, as you may need to overwrite the value set by an earlier subscriber.