我们如何禁用 Azure 订阅中的 SQl 过滤器?

How can we disable the SQl filter in Azure Subscriptions?

我用它来创建我的订阅:

public void CreateSubFilter(String TopicName, String SubscriptionName, String expression)
{

    var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
    // Create a filtered subscription
    SqlFilter MyFilter = new SqlFilter(expression);
    namespaceManager.CreateSubscription(TopicName, SubscriptionName, MyFilter);

}

我找不到默认过滤器 (Matchall),所以 myFilter 只是添加到匹配的所有过滤器中。 我的问题是如何删除匹配所有默认过滤器?

编辑 2 : 订阅正在为类似 proprty1 = 'value' 的东西工作 但是当它尝试使用以下数字时它不起作用: portty1 > 值 我读了很多关于 SQL 过滤器的文章,我确信我的问题来自那里...... 感谢大家的帮助

如果您不想应用过滤器,请使用不带过滤器的 CreateSubscription signature。那不会应用过滤器。

订阅始终有一个包含过滤器 1=1(匹配所有)的默认规则(名为“$Default”)。 AFAIK 您需要在 SubscriptionClient class.

上调用 RemoveRule 方法

保罗.

感谢您的帮助,他是解决方案希望对您有所帮助: 创建一个带有 custum

的订阅
public void CreateSubFilter(String TopicName, String SubscriptionName)
        { 
            var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
            namespaceManager.CreateSubscription(TopicName, SubscriptionName);

        }

第二个添加过滤器并删除默认过滤器(匹配所有):

    public void addRuleFilter(String TopicName, String SubscriptionName, String filterName,String expression)
    {
           MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);

        // Create a filtered subscription
        SqlFilter MyFilter = new SqlFilter(expression);

        SubscriptionClient mySubscriptionClient = factory.CreateSubscriptionClient(TopicName, SubscriptionName);
        try
        {
            mySubscriptionClient.RemoveRule("$Default");//delete  le MatchALL
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }

        mySubscriptionClient.AddRule(filterName, MyFilter);//add my Filter
    }

希望对您有所帮助

我建议添加命名规则描述:

var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
var ruleDescription = new RuleDescription("RuleName", MyFilter);
namespaceManager.CreateSubscription(TopicName, SubscriptionName, ruleDescription);

在这种情况下,不会创建 $Default 规则。