Kentico-查询文本中的多个WHERE宏

Kentico-查询文本中的多个WHERE宏,kentico,Kentico,在QueryDataSource中使用多个WHERE宏时,我收到以下错误 安全例外 描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改应用程序的信任级别 我在Where子句中有一个具有以下表达式的QueryDataSource: ranConStyle = '{%QueryString.cs#%}' and rgnme= {%QueryString.csnme.cs#%} 查询是: 从CB_图库、CB_产品中选择* 哪里 x=xId和

在QueryDataSource中使用多个WHERE宏时,我收到以下错误

安全例外

描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改应用程序的信任级别

我在Where子句中有一个具有以下表达式的QueryDataSource:

ranConStyle = '{%QueryString.cs#%}' and rgnme= {%QueryString.csnme.cs#%}
查询是:

从CB_图库、CB_产品中选择* 哪里 x=xId和 y='y'和z='y'和 哪里 z ASC订购
WHERE和其他查询宏必须包含有效的SQL语法,这些宏应该取代简单的WHERE条件,以避免向查询中注入多个参数

您可以替换宏的整个where条件,使属性类似于x=xId和y='y',z='y',ranConStyle='{%QueryString.cs%}'和rgnme={%QueryString.csnme.cs%}

但从我的头脑中,我不确定它是否能通过SQL语法检查


这些宏从未打算用于复杂的用途,只是为了使您能够在不重写的情况下更改来自web部件的查询,或者允许您在更多地方使用相同的查询,但这受到安全性的限制。这是一种安全策略,就像使用这些宏向Web部件、甚至查询字符串和其他变量注入各种输入一样,可能会受到最终用户或网站访问者的影响。

您遇到的错误与应用程序信任级别有关,这是一种ASP.NET安全功能

确保您正在一个环境中托管您的Kentico实例。 从Kentico 8.1开始,只支持完全信任-您可以检查托管要求。

您可以尝试以下操作 从中选择* 从CB_图库、CB_产品中选择* 哪里 x=xId和 y='y'和z='y'和 A在哪里
ORDER BY z ASC

问题可能是某些数据库值中有撇号,在执行这些值时,Kentico会停止执行以避免任何SQL注入攻击

在希望值带有撇号的地方访问值的最佳方法是使用SQL注入安全语法

{%SQLEscape(QueryString.cs)%} {%SQLEscape(QueryString.csnme.cs)%}
您可以在这里阅读如何编写SQL注入安全宏语法