您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。info
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
,因此部署作業會失敗,並顯示上述錯誤。
解析度
請確認 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
錯誤訊息
透過 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
指向無效的網址,因此部署作業會失敗,並顯示上述錯誤。
解析度
請確認 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
錯誤訊息
透過 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 元素名稱的條件,就會導致錯誤。舉例來說,下列政策的根元素名稱開頭為數字,因此無效。元素名稱如果包含空格,也會無效。
<?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 管理 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.
錯誤螢幕截圖範例
原因
如果 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>