您正在查看 Apigee 和 Apigee Hybrid 文档。
查看 Apigee Edge 文档。
InvalidResourceType
错误消息
通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:
Error Deploying Revision revision_number to environment MessageValidation soap_message_validation_policy: Invalid Resource Type resource_type. It should be xsd or wsdl. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.
错误消息示例
Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py.
It should be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;
Organization:gsc-hipaa;Environment:test.
错误屏幕截图示例
原因
如果将 SOAPMessageValidation 政策中的 <ResourceURL>
元素设为此政策不支持的资源类型,则会出现此错误。支持的资源类型为 xsd
和 wsdl
。
诊断
识别 SOAPMessageValidation 政策名称以及在政策的
<ResourceURL>
元素中使用的无效资源类型。您可以在错误消息中找到这两项。例如,在以下错误中,SOAPMessageValidation 政策名称为SOAP-Message-Validation-1
,资源类型为py
。Error Deploying Revision 1 to test MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py. It should be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc- hipaa;Environment:test.
检查失败的 SOAPMessageValidation 政策 XML。如果指定给
<ResourceURL>
元素的资源类型与在上述第 1 步中标识的无效资源类型匹配,则会导致错误。例如,以下政策将资源类型指定为
py
,它与错误消息中的内容匹配:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://sample.com"> sampleObject</Element> <SOAPMessage/> <Source>request</Source> <ResourceURL>py://Script-1.py</ResourceURL> </MessageValidation>
由于
<ResourceURL>
中使用的资源类型不是xsd
或wsdl
,因此部署会失败并显示上述错误。
解决方法
请确保在 SOAPMessageValidation 政策的 <ResourceURL>
元素中指定的资源类型设置为 xsd
或 wsdl
,并且资源文件使用的格式正确无误。
如需更正上述 SOAPMessageValidation 政策无效,您可以将资源类型修改为 xsd
或 wsdl
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
<DisplayName>SOAP Message Validation-1</DisplayName>
<Properties/>
<Element namespace="http://sample.com"> sampleObject</Element>
<SOAPMessage/>
<Source>request</Source>
<ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
</MessageValidation>
ResourceCompileFailed
错误消息
通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:
Error Deploying Revision revision_number to environment MessageValidation soap_message_validation_policy: Failed to compile resource resource. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.
错误消息示例
Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Failed to compile resource SOAP-Message-Validation-1.wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;Environment:test.
错误屏幕截图示例
原因
如果在 SOAPMessageValidation 政策的 <ResourceURL>
元素中引用的资源脚本包含错误,导致其无法在部署期间编译,就会发生此错误。
诊断
标识 SOAPMessageValidation 政策名称以及该政策中使用的资源脚本。您可以在错误消息中找到这两项。例如,在以下错误中,SOAPMessageValidation 政策名称为
SOAP-Message-Validation-1
,资源脚本为SOAP-Message-Validation-1.wsdl
。Error Deploying Revision 1 to test MessageValidation SOAP-Message-Validation-1: Failed to compile resource SOAP-Message-Validation-1.wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa; Environment:test.
检查失败的 SOAPMessageValidation 政策 XML,并验证指定给
<ResourceURL>
元素的资源脚本与错误消息中的脚本是否匹配。例如,以下政策将
<ResourceURL>
元素指定为SOAP-Message-Validation-1.wsdl
,它与错误消息中的内容匹配:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://sample.com"> sampleObject</Element> <SOAPMessage/> <Source>request</Source> <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL> </MessageValidation>
查看在第 1 步中找到的资源脚本文件,看看是否存在任何可能会导致编译错误的问题。
下面是一个资源脚本文件示例:
<?xml version="1.0" encoding="ISO-8859-1"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsd/"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="request" type="xs:string"/> </xs:schema> </wsdl:types> </wsdl:definitions>
由于
xmlns:wsdl
指向无效网址,因此部署会失败并显示上述错误。
解决方法
请确保在 SOAPMessageValidation 政策的 <ResourceURL>
元素中指定的资源脚本不存在任何导致其无法编译的问题。
如需更正上面显示的 SOAP-Message-Validation-1.wsdl
脚本,您可以修改 xmlns:wsdl
以指向有效的网址:
<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="request" type="xs:string"/>
</xs:schema>
</wsdl:types>
</wsdl:definitions>
RootElementNameUnspecified
错误消息
通过 Apigee 界面或 API 保存 API 代理失败并显示以下错误消息:
Error Saving Revision revision_number MessageValidation soap_message_validation_policy: RootElement name is not specified.
错误消息示例
Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
错误屏幕截图示例
原因
如果 SOAPMessageValidation 政策中的 <Element>
元素不包含根元素的名称,则会出现此错误。
诊断
标识出错的 SOAPMessageValidation 政策名称。例如,在以下错误中,SOAPMessageValidation 政策名称为
SOAP-Message-Validation-1
:Error Saving Revision 2 MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
检查失败的 SOAPMessageValidation 政策 XML。如果未在
<Element>
元素中指定用于验证的根元素名称,则会导致错误。例如,以下政策不会指定根元素名称:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://schemas.xmlsoap.org/soap/prices"/> <SOAPMessage/> <Source>request</Source> <ResourceURL>xsd://Script-1.xsd</ResourceURL> </MessageValidation>
由于未指定根元素名称,因此部署将失败并显示上面所示的错误。
解决方法
请确保 SOAPMessageValidation 政策的 <Element>
元素包含正确的根元素。
如需更正上面显示的 SOAPMessageValidation 政策,您可以修改 <Element>
并添加有效的根元素,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
<DisplayName>SOAP Message Validation-1</DisplayName>
<Properties/>
<Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
<SOAPMessage/>
<Source>request</Source>
<ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>
InvalidRootElementName
错误消息
通过 Apigee 界面或 API 保存 API 代理失败并显示以下错误消息:
Error Saving Revision revision_number MessageValidation soap_message_validation_policy: RootElement name root_element_name is invalid.
错误消息示例
Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
is invalid.
错误屏幕截图示例
原因
如果 SOAPMessageValidation 政策中的 <Element>
元素包含的根元素名称未遵循有效元素命名的 XML 规则,则会出现此错误。
诊断
标识出错的 SOAPMessageValidation 政策名称。例如,在以下错误中,SOAPMessageValidation 政策名称为
SOAP-Message-Validation-1
:Error Saving Revision 2 MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse is invalid.
检查失败的 SOAPMessageValidation 政策 XML。如果在
<Element>
元素中指定的根元素名称与有效 XML 元素名称的条件不符,则会导致错误。例如,以下政策的根元素名称以数字开头,这是无效的。包含空格的元素名称也无效。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://schemas.xmlsoap.org/soap/prices">1GetPriceResponse</Element> <SOAPMessage/> <Source>request</Source> <ResourceURL>xsd://Script-1.xsd</ResourceURL> </MessageValidation>
解决方法
请确保 SOAPMessageValidation 政策的 <Element>
元素包含有效的根元素名称。
如需更正上面显示的 SOAPMessageValidation 政策,您可以修改 <Element>
元素以包含有效的根元素名称,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
<DisplayName>SOAP Message Validation-1</DisplayName>
<Properties/>
<Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
<SOAPMessage/>
<Source>request</Source>
<ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>
NoElements
错误消息
通过 Apigee 界面或 API 部署 API 代理失败并显示以下错误消息:
Error Deploying Revision revision_number Resource "resource_url" has no element definitions.
错误消息示例
Error Deploying Revision 2 to test
Resource "xsd://Script-1.xsd" has no element definitions.
错误屏幕截图示例
原因
如果在 SOAPMessageValidation 政策的 <Resource>
元素中指定的资源文件不包含可用于验证的任何元素,则会出现此错误。
诊断
标识错误消息中缺失元素定义的资源文件。例如,在下面的错误中,使用的资源文件为
xsd://Script-1.xsd
:Error Deploying Revision 2 to test Resource "xsd://Script-1.xsd" has no element definitions.
检查在第 1 步中标识的资源文件。如果未定义任何元素,则会导致错误。
例如,以下资源文件
Script-1.xsd
不包含任何元素:<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> </xsd:schema>
由于资源文件没有任何元素,因此部署会失败并显示上述错误。
解决方法
请确保 SOAPMessageValidation 政策中使用的资源文件包含相关的元素定义。
如需更正上面显示的资源文件示例,您可以修改 xsd
文件以添加以下内容:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="shipOrder" type="order"/>
<xsd:complexType name="order">
<xsd:sequence>
<xsd:element name="shipTo" type="shipAddress"/>
<xsd:element name="items" type="cdItems"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="shipAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItems">
<xsd:sequence>
<xsd:element name="item" type="cdItem" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItem">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="quantity" type="xsd:integer"/>
<xsd:element name="price" type="xsd:decimal"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>