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

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

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

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

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