นโยบาย SOAPMessageValidation

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

นโยบาย SOAPMessageValidation จะดำเนินการต่อไปนี้

  • ตรวจสอบความถูกต้องของข้อความ XML กับสคีมา XSD
  • ตรวจสอบข้อความ SOAP กับคำจำกัดความ WSDL
  • กำหนดรูปแบบที่ถูกต้องของข้อความ JSON และ XML

แม้ว่าชื่อของนโยบายนี้ใน UI จะเป็น "การตรวจสอบข้อความ SOAP" แต่นโยบายนี้จะตรวจสอบมากกว่า แค่ข้อความ SOAP ส่วนนี้จะอ้างอิงถึงนโยบายในชื่อ "นโยบายการตรวจสอบข้อความ"

องค์ประกอบ <MessageValidation>

กำหนดนโยบายการตรวจสอบข้อความ

ค่าเริ่มต้น ดูแท็บนโยบายเริ่มต้นด้านล่าง
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท ออบเจ็กต์ที่ซับซ้อน
องค์ประกอบหลัก ไม่มี
องค์ประกอบย่อย <DisplayName>
<Element>
<ResourceURL>
<SOAPMessage>
<Source>

ไวยากรณ์

องค์ประกอบ <MessageValidation> ใช้ไวยากรณ์ต่อไปนี้

<MessageValidation
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
    <!-- All MessageValidation child elements are optional -->
    <DisplayName>policy_display_name</DisplayName>
    <Element namespace="element_namespace">element_to_validate</Element>
    <SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/>
    <Source>message_to_validate</Source>
    <ResourceURL>validation_WSDL_or_XSD</ResourceURL>

</MessageValidation>

นโยบายเริ่มต้น

ตัวอย่างต่อไปนี้แสดงการตั้งค่าเริ่มต้นเมื่อคุณเพิ่มนโยบายการตรวจสอบข้อความ ลงในโฟลว์ใน UI ของ Edge

<MessageValidation 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>

This element has the following attributes that are common to all policies:

Attribute Default Required? Description
name N/A Required

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

continueOnError false Optional Set to "false" to return an error when a policy fails. This is expected behavior for most policies. Set to "true" to have flow execution continue even after a policy fails.
enabled true Optional Set to "true" to enforce the policy. Set to "false" to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow.
async   false Deprecated This attribute is deprecated.

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีใช้ นโยบายการตรวจสอบข้อความ

1: การตรวจสอบ XSD

คุณสามารถใช้นโยบายการตรวจสอบข้อความเพื่อตรวจสอบเพย์โหลดของคำขอข้อความ XML กับสคีมา XSD

  1. สร้างไฟล์ทรัพยากร XSD ใหม่ เช่น "note-schema.xsd":
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="note">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="to" type="xs:string"/>
            <xs:element name="from" type="xs:string"/>
            <xs:element name="heading" type="xs:string"/>
            <xs:element name="body" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
  2. เพิ่มนโยบายการตรวจสอบข้อความ SOAP ไปยัง PreFlow ของปลายทางพร็อกซีโดยทำดังนี้
    1. ระบุตำแหน่งของไฟล์ทรัพยากร XSD ด้วยองค์ประกอบ <ResourceURL> เช่น
      ...
        <ResourceURL>xsd://note-schema.xsd</ResourceURL>
      ...
    2. นำองค์ประกอบ <SOAPMessage> และ <Element> ออกจาก คำจำกัดความของนโยบาย

    คำจำกัดความนโยบายควรมีลักษณะดังนี้

    <MessageValidation continueOnError="false"
        enabled="true" name="validateXMLRequest">
      <DisplayName>My XML Validator</DisplayName>
      <Properties/>
      <Source>request</Source>
      <ResourceURL>xsd://note-schema.xsd</ResourceURL>
    </MessageValidation>
  3. ส่งคำขอ POST ไปยังพร็อกซี API โดยใช้ XML เป็นเพย์โหลดข้อความ ดังตัวอย่างต่อไปนี้
    curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock
      -d '<note>
      <to>Fred Rogers</to>
      <from>Nick Danger</from>
      <heading>Greetings from my neighborhood</heading>
      <body>Just writing to say hello.</body>
    </note>'

    โปรดทราบว่าตั้งค่าส่วนหัว Content-type เป็น "application/xml"

    นอกจากนี้ คุณยังสร้างไฟล์ข้อมูลสำหรับเพย์โหลดและอ้างอิงด้วยคำสั่ง ที่คล้ายกับตัวอย่างต่อไปนี้ได้ด้วย

    curl -v -X POST -H 'Content-type: application/xml' http://my-test.apigee.net/v1/xsd-mock
      --data '@../examples/note-payload.xml'

คุณควรได้รับการตอบกลับ HTTP 200 คุณอาจได้รับรายละเอียดเพิ่มเติมเกี่ยวกับคำขอ ทั้งนี้ขึ้นอยู่กับปลายทางเป้าหมาย ตัวอย่างเช่น หากคุณใช้ http://httpbin.org/post เป็นปลายทางเป้าหมายและระบุเอาต์พุต -v (verbose) การตอบกลับควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

< HTTP/1.1 200 OK
< Date: Wed, 16 May 2018 21:24:54 GMT
< Content-Type: application/xml
< Content-Length: 431
< Connection: keep-alive
< Server: gunicorn/19.8.1
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Via: 1.1 vegur
{
  "args":{},
  "data":"<note><to>fred</to><from>nick</from><heading>hello</heading>
    <body>Just writing to say hello.</body></note>",
  "files":{},
  "form":{},
  "headers": {
    "Accept":"*/*",
    "Connection":"close",
    "Content-Length":"106",
    "Content-Type":"application/xml",
    "Host":"httpbin.org",
    "User-Agent":"curl/7.58.0"
  },
  "json":null,
  "origin":"10.1.1.1, 104.154.179.1",
  "url":"http://httpbin.org/post"
}

หากต้องการยืนยันว่าการตรวจสอบ XSD ทำงานได้ ให้ลองแทรกแท็กอื่นลงในเนื้อหาของคำขอ เช่น

curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock
  -d '<note>
  <to>Fred Rogers</to>
  <from>Nick Danger</from>
  <heading>Greetings from my neighborhood</heading>
  <body>Just writing to say hello.</body>
  <badTag>Not good</badTag>
</note>'

คุณควรได้รับข้อผิดพลาดในการตรวจสอบความถูกต้อง

2: การตรวจสอบ SOAP

คุณสามารถใช้นโยบายการตรวจสอบข้อความเพื่อตรวจสอบเพย์โหลดของคำขอข้อความ SOAP กับ WSDL

  1. สร้างไฟล์ทรัพยากร WSDL ใหม่ เช่น "example-wsdl.wsdl":
  2. เพิ่มนโยบายการตรวจสอบข้อความ SOAP ไปยัง PreFlow ของพร็อกซีปลายทางโดยทำดังนี้
    1. ตั้งค่าแอตทริบิวต์ version ขององค์ประกอบ <SOAPMessage> เป็นเวอร์ชันของโปรโตคอล SOAP ที่ต้องการตรวจสอบ เช่น "1.1":
      ...
        <SOAPMessage version="1.1"/>
      ...
    2. ตั้งค่าขององค์ประกอบ <Element> เป็นองค์ประกอบที่ต้องการ ตรวจสอบ
      ...
        <Element namespace="https://example.com/gateway">getID</Element>
      ...

      <Element> ระบุองค์ประกอบย่อยแรกภายใต้องค์ประกอบ <Body> ในซองจดหมายของคำขอ SOAP

      ตั้งค่าแอตทริบิวต์ namespace เป็นเนมสเปซสำหรับองค์ประกอบย่อยนั้น

    3. ระบุตำแหน่งของไฟล์ทรัพยากร WSDL ด้วยองค์ประกอบ <ResourceURL> เช่น
      ...
        <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL>
      ...

    คำจำกัดความนโยบายควรมีลักษณะดังนี้

    <MessageValidation continueOnError="false"
        enabled="true" name="validateSOAPRequest">
      <DisplayName>My SOAP Validator</DisplayName>
      <Properties/>
      <Source>request</Source>
      <SOAPMessage version="1.1"/>
      <Element namespace="https://example.com/gateway">getID</Element>
      <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL>
    </MessageValidation>
  3. ส่งคำขอ POST ไปยังพร็อกซี API โดยมีซองจดหมาย SOAP เป็น เพย์โหลดของข้อความ ดังตัวอย่างต่อไปนี้
    curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock
      -d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:prox="https://example.com/gateway" xmlns:typ="https://example.com/gateway/types">
      <soapenv:Header/>
      <soapenv:Body>
        <prox:getID>
          <typ:MyType>
            <typ:ID>42</typ:ID>
          </typ:MyType>
        </prox:getID>
      </soapenv:Body>
    </soapenv:Envelope>'

    โปรดทราบว่าตั้งค่าส่วนหัว Content-type เป็น "application/xml"

    นอกจากนี้ คุณยังสร้างไฟล์ข้อมูลสำหรับเพย์โหลดและอ้างอิงด้วยคำสั่ง ที่คล้ายกับตัวอย่างต่อไปนี้ได้ด้วย

    curl -v -X POST -H 'Content-type: application/xml' http://my-test.apigee.net/v1/xsd-mock
      --data '@../examples/soap-payload.xml'

คุณควรได้รับการตอบกลับ HTTP 200 คุณอาจได้รับรายละเอียดเพิ่มเติมเกี่ยวกับคำขอ ทั้งนี้ขึ้นอยู่กับปลายทางเป้าหมาย ตัวอย่างเช่น หากคุณใช้ http://httpbin.org/post เป็นปลายทางเป้าหมาย การตอบกลับควรมีลักษณะคล้ายกับ ต่อไปนี้

< HTTP/1.1 200 OK
< Date: Wed, 16 May 2018 21:24:54 GMT
< Content-Type: application/xml
< Content-Length: 431
< Connection: keep-alive
< Server: gunicorn/19.8.1
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Credentials: true
< Via: 1.1 vegur
{
  "args":{},
  "data":"<note><to>fred</to><from>nick</from><heading>hello</heading>
    <body>Just writing to say hello.</body></note>",
  "files":{},
  "form":{},
  "headers": {
    "Accept":"*/*",
    "Connection":"close",
    "Content-Length":"106",
    "Content-Type":"application/xml",
    "Host":"httpbin.org",
    "User-Agent":"curl/7.58.0"
  },
  "json":null,
  "origin":"10.1.1.1, 104.154.179.1",
  "url":"http://httpbin.org/post"
}

3: XML/JSON ที่มีรูปแบบถูกต้อง

คุณสามารถใช้นโยบายการตรวจสอบข้อความเพื่อยืนยันว่าเพย์โหลดข้อความ JSON หรือ XML มีรูปแบบที่ถูกต้อง (ไม่เหมือนกับการตรวจสอบ) นโยบายนี้ช่วยให้มั่นใจว่าโครงสร้าง และเนื้อหาเป็นไปตามมาตรฐานที่ยอมรับ ซึ่งรวมถึง

  • มีองค์ประกอบรูทเดียว
  • เนื้อหาไม่มีอักขระที่ไม่ถูกต้อง
  • ออบเจ็กต์และแท็กซ้อนกันอย่างถูกต้อง
  • แท็กเริ่มต้นและแท็กสิ้นสุดตรงกัน

วิธีตรวจสอบเพย์โหลด XML หรือ JSON ที่มีรูปแบบถูกต้อง

  1. เพิ่มนโยบายการตรวจสอบข้อความ SOAP ไปยัง PreFlow ของปลายทางพร็อกซี
  2. นำองค์ประกอบ <ResourceURL>, <SOAPMessage> และ <Element> ออกจากคำจำกัดความของนโยบาย

    คำจำกัดความนโยบายควรมีลักษณะดังนี้

    <MessageValidation async="false" continueOnError="false"
        enabled="true" name="validateXMLRequest">
      <DisplayName>My JSON Checker</DisplayName>
      <Properties/>
      <Source>request</Source>
    </MessageValidation>
  3. ส่งคำขอ POST ไปยังพร็อกซี API ดังตัวอย่างต่อไปนี้
    curl -v -X POST -H 'Content-Type: application/json' http://my-test.apigee.net/v1/xsd-mock
      -d '{
    "note": {
      "to": "Fred Rogers",
      "from": "Nick Danger",
      "header": "Greetings from my neighborhood",
      "body": "Just writing to say hello."
      }
    }'

    โปรดทราบว่าตั้งค่าส่วนหัว Content-type เป็น "application/json"

    หากต้องการตรวจสอบว่าไฟล์ XML มีรูปแบบที่ถูกต้องหรือไม่ ให้ใช้ XML เป็นเพย์โหลดของข้อความและ ตั้งค่า Content-type เป็น "application/xml"

คุณควรได้รับการตอบกลับ HTTP 200 เมื่อส่งเพย์โหลดข้อความ ที่ไม่มี XML หรือ JSON ที่มีรูปแบบถูกต้อง คุณควรได้รับข้อผิดพลาด steps.messagevalidation.Failed

การอ้างอิงองค์ประกอบย่อย

ส่วนนี้จะอธิบายองค์ประกอบย่อยของ <MessageValidation>

<DisplayName>

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, more natural-sounding name.

The <DisplayName> element is common to all policies.

Default Value n/a
Required? Optional. If you omit <DisplayName>, the value of the policy's name attribute is used
Type String
Parent Element <PolicyElement>
Child Elements None

The <DisplayName> element uses the following syntax:

Syntax

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

Example

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

The <DisplayName> element has no attributes or child elements.

<Element>

ระบุองค์ประกอบในข้อความที่จะตรวจสอบ ซึ่งเป็นองค์ประกอบย่อยแรกภายใต้องค์ประกอบ <Body> ในซองจดหมายของคำขอ SOAP

ค่าเริ่มต้น sampleObject
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบหลัก <MessageValidation>
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <Element> ใช้ไวยากรณ์ต่อไปนี้

ไวยากรณ์

...
  <Element namespace="element_namespace">element_to_validate</Element>
...

ตัวอย่างที่ 1

ตัวอย่างต่อไปนี้กำหนดองค์ประกอบเดียวที่จะตรวจสอบ

...
<Element namespace="https://example.com/gateway">getID</Element>
...

ตัวอย่างที่ 2

คุณระบุองค์ประกอบที่จะตรวจสอบได้มากกว่า 1 รายการโดยเพิ่มองค์ประกอบ <Element> หลายรายการ ดังนี้

...
<Element namespace="https://example.com/gateway">getID</Element>
<Element namespace="https://example.com/gateway">getDetails</Element>
...

องค์ประกอบ <Element> มีแอตทริบิวต์ต่อไปนี้

แอตทริบิวต์ ค่าเริ่มต้น จำเป็นหรือไม่ คำอธิบาย
namespace "http://sample.com" ไม่บังคับ กำหนดเนมสเปซขององค์ประกอบที่จะตรวจสอบ

<ResourceURL>

ระบุสคีมา XSD หรือคำจำกัดความ WSDL ที่จะใช้เพื่อตรวจสอบข้อความต้นทาง

ค่าเริ่มต้น wsdl://display_name.wsdl
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบหลัก <MessageValidation>
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <ResourceURL> ใช้ไวยากรณ์ต่อไปนี้

ไวยากรณ์

...
  <ResourceURL>[wsdl|xsd]://validation_WSDL_or_XSD</ResourceURL>
...

ตัวอย่าง

สำหรับไฟล์ XML ให้ทำดังนี้

...
<ResourceURL>xsd://note-schema.xsd</ResourceURL>
...

สำหรับ WSDL ให้ทำดังนี้

...
<ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL>
...

ค่าของ <ResourceURL> ต้องชี้ไปยังไฟล์ ทรัพยากรในพร็อกซี API โดยจะอ้างอิงถึงแหล่งข้อมูลภายนอกผ่าน HTTP หรือ HTTPS ไม่ได้

หากคุณไม่ได้ระบุค่าสำหรับ <ResourceURL> ระบบจะตรวจสอบข้อความเพื่อดูว่ามี JSON หรือ XML ที่มีรูปแบบถูกต้องหรือไม่ หากส่วนหัว Content-type คือ "application/json" หรือ "application/xml" ตามลำดับ

องค์ประกอบ <ResourceURL> ไม่มีองค์ประกอบย่อยหรือแอตทริบิวต์

การใช้ XSD เพื่อตรวจสอบความถูกต้อง

หากเพย์โหลด XML ที่คุณตรวจสอบความถูกต้องด้วยนโยบายการตรวจสอบข้อความอ้างอิงสคีมาอื่น คุณต้องนำหน้าไฟล์ XSD ที่รวมด้วย xsd ในแอตทริบิวต์ schemaLocation

สคีมาตัวอย่างต่อไปนี้ประกอบด้วย XSD หลายรายการ

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:include schemaLocation="xsd://note-schema.xsd"/>
  <xs:include schemaLocation="xsd://letter-schema.xsd"/>
  <xs:include schemaLocation="xsd://user-schema.xsd"/>
</xs:schema>

การใช้ WSDL เพื่อการตรวจสอบ

WSDL ต้องกำหนดสคีมาอย่างน้อย 1 รายการ หากไม่ได้อ้างอิงสคีมาอย่างน้อย 1 รายการ นโยบายการตรวจสอบข้อความจะล้มเหลว

ความลึกในการนำเข้าสูงสุดสำหรับสคีมาคือ 10 หากคุณนำเข้าแบบซ้อนเกินจำนวนดังกล่าว นโยบายการตรวจสอบข้อความจะล้มเหลว

<SOAPMessage>

กำหนดเวอร์ชัน SOAP ที่นโยบายการตรวจสอบข้อความจะตรวจสอบ

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท ไม่มี
องค์ประกอบหลัก <MessageValidation>
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <SOAPMessage> ใช้ไวยากรณ์ต่อไปนี้

ไวยากรณ์

...
  <SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/>
...

ตัวอย่าง

...
<SOAPMessage version="1.1"/>
...

องค์ประกอบ <SOAPMessage> มีแอตทริบิวต์ต่อไปนี้

แอตทริบิวต์ ค่าเริ่มต้น จำเป็นหรือไม่ คำอธิบาย
version ไม่มี ไม่บังคับ เวอร์ชัน SOAP ที่นโยบายนี้ใช้เพื่อตรวจสอบข้อความ SOAP

ค่าที่ใช้ได้มีดังนี้

  • "1.1"
  • "1.2"
  • "1.1/1.2"

ดูข้อมูลเพิ่มเติมได้ที่ จาก SOAP/1.1 เป็น SOAP เวอร์ชัน 1.2 ใน 9 จุด

<Source>

ระบุข้อความต้นฉบับที่จะตรวจสอบ ค่าขององค์ประกอบนี้คือชื่อของข้อความที่ต้องการตรวจสอบ

หากไม่ได้ตั้งค่า <Source> นโยบายนี้จะใช้ค่าเริ่มต้นเป็น "message" ซึ่งหมายถึงข้อความคำขอที่สมบูรณ์ (ในโฟลว์คำขอ) หรือข้อความตอบกลับ (ในโฟลว์การตอบกลับ) รวมถึงเพย์โหลด ทั้งหมด นอกจากนี้ คุณยังตั้งค่าเป็น "คำขอ" หรือ "คำตอบ" อย่างชัดเจนเพื่ออ้างอิงถึงคำขอหรือ คำตอบได้ด้วย

ค่าเริ่มต้น ส่งคำขอ
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบหลัก <MessageValidation>
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <Source> ใช้ไวยากรณ์ต่อไปนี้

ไวยากรณ์

...
  <Source>message_to_validate</Source>
...

ตัวอย่าง

...
<Source>request</Source>
...

นอกจาก "message", "request" และ "response" แล้ว คุณยังตั้งค่า <Source> เป็นชื่อของข้อความใดก็ได้ในโฟลว์ แต่หากทำเช่นนี้ คุณต้องสร้างข้อความที่กำหนดเองที่มีชื่อดังกล่าวในโฟลว์ก่อนที่นโยบายนี้จะมีผล ไม่เช่นนั้นคุณจะได้รับ ข้อผิดพลาด

หากไม่สามารถระบุค่าของ <Source> ในโฟลว์ข้อความหรือระบุเป็นประเภทที่ไม่ใช่ข้อความ ระบบจะดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

  • หากเป็นค่า Null: Edge จะแสดงข้อผิดพลาด steps.messagevalidation.SourceMessageNotAvailable
  • หากเป็นประเภทที่ไม่ใช่ข้อความ: Edge จะแสดงข้อผิดพลาด steps.messagevalidation.NonMessageVariable

องค์ประกอบ <Source> ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย

รหัสข้อผิดพลาด

ข้อผิดพลาดที่ส่งกลับจากนโยบาย Edge จะมีรูปแบบที่สอดคล้องกันตามที่อธิบายไว้ในข้อมูลอ้างอิงรหัสข้อผิดพลาด

ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
steps.messagevalidation.SourceMessageNotAvailable 500

ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรที่ระบุในองค์ประกอบ <Source> ของนโยบายมีลักษณะอย่างใดอย่างหนึ่งต่อไปนี้

  • อยู่นอกขอบเขต (ใช้ไม่ได้ในขั้นตอนเฉพาะเจาะจงที่มีการใช้นโยบาย)
  • หรือ
  • แก้ไขไม่ได้ (ไม่ได้กำหนด)
steps.messagevalidation.NonMessageVariable 500

ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งค่าองค์ประกอบ <Source> ในนโยบาย SOAPMessageValidation เป็นตัวแปรที่ไม่ใช่ประเภท ข้อความ

ตัวแปรประเภทข้อความจะเป็นตัวแทนของคำขอและการตอบกลับ HTTP ทั้งหมด ตัวแปรโฟลว์ Edge ในตัว request, response และ message เป็นข้อความประเภท ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรข้อความได้ที่ข้อมูลอ้างอิงตัวแปร

steps.messagevalidation.Failed 500 ข้อผิดพลาดนี้เกิดขึ้นหากนโยบาย SOAPMessageValidation ตรวจสอบเพย์โหลดของข้อความอินพุตกับสคีมา XSD หรือคำจำกัดความ WSDL ไม่สำเร็จ และจะเกิดขึ้นหากมี JSON หรือ XML ที่มีรูปแบบไม่ถูกต้องในข้อความเพย์โหลด

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
InvalidResourceType องค์ประกอบ <ResourceURL> ในนโยบาย SOAPMessageValidation มีการตั้งค่าเป็นประเภททรัพยากรที่นโยบายไม่รองรับ
ResourceCompileFailed สคริปต์ทรัพยากรที่อ้างอิงในองค์ประกอบ <ResourceURL> ของนโยบาย SOAPMessageValidation มีข้อผิดพลาดที่ทำให้คอมไพล์ไม่ได้
RootElementNameUnspecified องค์ประกอบ <Element> ในนโยบาย SOAPMessageValidation ไม่มีชื่อขององค์ประกอบราก
InvalidRootElementName องค์ประกอบ <Element> ในนโยบาย SOAPMessageValidation มีชื่อองค์ประกอบรูทที่ไม่สอดคล้องกับกฎ XML สำหรับการตั้งชื่อองค์ประกอบที่ถูกต้อง

สคีมา

นโยบายแต่ละประเภทกำหนดโดยสคีมา XML (.xsd) โดยคุณดูสคีมานโยบาย ได้ใน GitHub

หัวข้อที่เกี่ยวข้อง