นโยบาย SOAPMessageValidation

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

นโยบาย SOAPMessageValidation ดำเนินการดังนี้

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

แม้ว่าชื่อของนโยบายนี้ใน UI จะเป็น "SOAP Message Validation" แต่นโยบายจะตรวจสอบมากกว่า แทนที่จะเป็นข้อความ 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 ของนโยบาย
ประเภท สตริง
องค์ประกอบระดับบนสุด &lt;PolicyElement&gt;
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <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 &quot;http://sample.com&quot; ไม่บังคับ กำหนดเนมสเปซขององค์ประกอบที่จะตรวจสอบ

<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

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