查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
InvalidResourceType
錯誤訊息
透過 Edge UI 或 Edge Management API 部署 API Proxy 會失敗,並顯示以下錯誤訊息:
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
, 發生上述錯誤,部署作業就會失敗。
解析度
請確認 <ResourceURL>
SOAPMessageValidation 政策元素中指定的資源類型已設為 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
錯誤訊息
透過 Edge UI 或 Edge Management API 部署 API Proxy 會失敗,並顯示以下錯誤訊息:
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
指向無效的網址,因此部署作業會 失敗,並遵循上方顯示的錯誤。
解析度
請確認<ResourceURL>
SOAPMessageValidation 政策沒有任何問題而無法編譯。
如要修正上述 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
錯誤訊息
無法透過 Edge UI 或 Edge Management API 儲存 API Proxy。 這則錯誤訊息:
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
錯誤訊息
無法透過 Edge UI 或 Edge Management API 儲存 API Proxy。 這則錯誤訊息:
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 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
錯誤訊息
無法透過 Edge UI 或 Edge Management API 部署 API Proxy 錯誤訊息:
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.
錯誤螢幕截圖
原因
如果資源的 <Resource>
元素中指定的資源檔案,就會發生這個錯誤
SOAPMessageValidation 政策並不包含任何可使用的元素
進行驗證。
診斷
找出錯誤訊息中缺少元素定義的資源檔案。 例如,在下列錯誤中, 中使用的資源檔案為
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>