นโยบาย SOAPMessageValidation

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

นโยบาย 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>

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

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

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

องค์ประกอบนี้มีแอตทริบิวต์ต่อไปนี้ซึ่งมักใช้กับนโยบายทั้งหมด

แอตทริบิวต์ ค่าเริ่มต้น จําเป็นไหม คำอธิบาย
name ไม่มีข้อมูล จำเป็น

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name มีตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง ขีดล่าง และจุดได้ ค่านี้ต้องมีความยาวไม่เกิน 255 อักขระ

ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกํากับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อภาษาอื่นที่เป็นธรรมชาติได้

continueOnError เท็จ ไม่บังคับ ตั้งค่าเป็น "false" เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังตามนโยบายส่วนใหญ่ ตั้งค่าเป็น "จริง" เพื่อดําเนินการโฟลว์ข้อมูลต่อไป แม้ว่านโยบายจะล้มเหลวก็ตาม
enabled จริง ไม่บังคับ ตั้งค่าเป็น "true" เพื่อบังคับใช้นโยบาย ตั้งค่าเป็น "false" เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังคงแนบไปกับโฟลว์
async   เท็จ เลิกใช้ แอตทริบิวต์นี้เลิกใช้งานแล้ว

ตัวอย่าง

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

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 ในขั้นตอนก่อนการส่งของปลายทางของพร็อกซี:
    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 (แบบละเอียด) การตอบกลับควรคล้ายกับตัวอย่างต่อไปนี้

< 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 ลงในโฟลว์ล่วงหน้าของปลายทางพร็อกซี
    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 ในขั้นตอนล่วงหน้าของปลายทางพร็อกซี
  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>

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่ออื่นที่ฟังดูเป็นธรรมชาติมากขึ้น

องค์ประกอบ <DisplayName> เหมือนกันในนโยบายทั้งหมด

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ หากไม่ระบุ <DisplayName> ระบบจะใช้ค่าของแอตทริบิวต์ name ของนโยบาย
ประเภท สตริง
องค์ประกอบระดับบน <PolicyElement>
องค์ประกอบย่อย ไม่มี

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

ไวยากรณ์

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

ตัวอย่าง

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

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

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

ค่าเริ่มต้น ส่งคำขอ
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบระดับบน <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

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