我在策略中有一条规则,我想处理一条错误消息。例如,如果我收到错误代码“ 0x80e003aa”,则停止规则并编写输入“ code13”(某些错误代码)。我知道存在“错误操作中”,但某些操作无效。有什么想法吗?
答案 0 :(得分:0)
您将需要确保捕获规则中的第一个错误。设置调试登录并产生错误。在日志中,您(很可能)会看到许多错误,然后复制其中第一个错误代码。
在“处理策略”中创建一个新的“匹配”规则,并将其设置为与“错误代码”匹配。在选择列表中,您可以选择错误代码,找到您复制的代码并将其添加。如果您在列表中找不到该代码,则它不是可以捕获的“主要”错误,您将不得不添加另一个错误代码。 如果不确定,只需将所有代码添加到“匹配操作”中即可(可以有多个)。
接下来,请确保您的规则是“错误规则”,并且之前没有放置其他错误规则(在规则列表中位于较高位置)。 DataPower仅执行一个错误规则,因此您需要确保它们按顺序排列。
另一种解决方案是添加带有“全部匹配”(*)匹配操作的新错误规则,并在其中使用GatewayScript或XSLT来检查代码并采取适当的操作,例如对于GWS:
// get the service metadata, i.e. the service var's
var sm = require ('service-metadata');
console.log(JSON.stringify(sm));
console.log(JSON.stringify(sm).slice(1566));
console.log(sm.errorSubcode);
if (sm.errorSubcode === '0x01d30003') {
// This is a XSD schema validation error
const err = sm.errorMessage.slice(sm.errorMessage.indexOf('/validate: ') + 10).trim();
session.output.write(err);
} else {
session.output.write(sm.errorMessage);
}