IGNITE-15045 .NET: Fix NullPointerException in ContinuousQuery with security enabled

Add null check to `SecurityAwareFilter`, because `PlatformContinuousQueryImpl` always sets itself as a remote filter, but serializes as null when the actual filter is not present.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/SecurityAwareFilter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/SecurityAwareFilter.java
index 481e1bf..1f15faa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/SecurityAwareFilter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/continuous/SecurityAwareFilter.java
@@ -53,6 +53,11 @@
 
     /** {@inheritDoc} */
     @Override public boolean evaluate(CacheEntryEvent<? extends K, ? extends V> evt) throws CacheEntryListenerException {
+        // Even if there is no custom filter, the platform filter is always present (for proper resource release),
+        // but only the custom filter is serialized.
+        if (original == null)
+            return true;
+
         IgniteSecurity security = ignite.context().security();
 
         try (OperationSecurityContext c = security.withContext(subjectId)) {
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs
index d49469f..b645233 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Query/Continuous/ContinuousQueryTest.cs
@@ -21,17 +21,50 @@
     using System;
     using System.Collections.Concurrent;
     using System.Collections.Generic;
+    using Apache.Ignite.Core.Binary;
     using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cache.Event;
     using Apache.Ignite.Core.Cache.Query.Continuous;
+    using Apache.Ignite.Core.Configuration;
+    using Apache.Ignite.Core.Log;
+    using Apache.Ignite.Core.Tests.Client.Cache;
     using NUnit.Framework;
 
     /// <summary>
-    /// Tests continuous queries.
+    /// Tests continuous queries with security enabled and disabled.
     /// </summary>
+    [TestFixture(false)]
+    [TestFixture(true)]
     [Category(TestUtils.CategoryIntensive)]
     public class ContinuousQueryTest
     {
+        /** Flag to enable Ignite security. */
+        private readonly bool _enableSecurity;
+
+        /** Logger for tracking errors. */
+        private readonly ListLogger _logger = new ListLogger(new ConsoleLogger())
+        {
+            EnabledLevels = new[] {LogLevel.Error}
+        };
+
+        /// <summary>
+        /// Initializes a new instance of <see cref="ContinuousQueryTest"/>. 
+        /// </summary>
+        public ContinuousQueryTest(bool enableSecurity)
+        {
+            _enableSecurity = enableSecurity;
+        }
+        
+        /// <summary>
+        /// Clears persistence directory before and after the test.
+        /// </summary>
+        [TestFixtureSetUp]
+        [TestFixtureTearDown]
+        public void FixtureTearDown()
+        {
+            TestUtils.ClearWorkDir();
+        }
+
         /// <summary>
         /// Tests same query on multiple nodes.
         /// This tests verifies that there are no exception on Java side during event delivery.
@@ -42,6 +75,8 @@
         {
             using (var ignite = StartIgnite())
             {
+                ignite.GetCluster().SetActive(true);
+
                 var cache = ignite.GetOrCreateCache<Guid, Data>("data");
                 cache.QueryContinuous(new ContinuousQuery<Guid, Data>(new Listener()));
 
@@ -57,6 +92,9 @@
                     }
                 }
             }
+
+            Assert.AreEqual(0,
+                _logger.Entries.FindAll(e => e.Message.Contains("CacheEntryEventFilter failed")).Count);
         }
 
         /// <summary>
@@ -84,13 +122,28 @@
         /// <summary>
         /// Starts the ignite.
         /// </summary>
-        private static IIgnite StartIgnite()
+        private IIgnite StartIgnite()
         {
-            return Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration())
+            var ignite = Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration())
             {
-                BinaryConfiguration = new Core.Binary.BinaryConfiguration(typeof(Data)),
-                AutoGenerateIgniteInstanceName = true
+                BinaryConfiguration = new BinaryConfiguration(typeof(Data)),
+                AutoGenerateIgniteInstanceName = true,
+                DataStorageConfiguration = new DataStorageConfiguration
+                {
+                    DefaultDataRegionConfiguration = new DataRegionConfiguration
+                    {
+                        PersistenceEnabled = _enableSecurity,
+                        Name = DataStorageConfiguration.DefaultDataRegionName,
+                    }
+                },
+                AuthenticationEnabled = _enableSecurity,
+                Logger = _logger,
+                IsActiveOnStart = false
             });
+            
+            ignite.GetCluster().SetBaselineAutoAdjustEnabledFlag(true);
+
+            return ignite;
         }
 
         private class Data