共用方式為


規劃使用 Web 服務

規劃 Web 服務可以分成兩種類別:規劃發佈 Web 服務,以及規劃取用 Web 服務。 本主題描述取用 Web 服務的考慮。 如需發佈 Web 服務的相關資訊,請參閱 規劃發佈 Web Services1

當您建立方案時,請記住下列事項:

  • 在參數名稱中使用兩個底線字元

    Web 方法的參數名稱不可以 "__" (兩個底線字元) 作為開頭。 以兩個底線字元作為開頭的名稱可能會建立無法為 XLANG/s 所支援 (亦即無法使用) 的 Web 訊息部分。

  • Web 方法不支援 Any 元素和 anyAttribute 屬性

    您無法在 Web 方法的架構中使用 任何 專案或任何 Attribute 屬性。

  • 使用 XLANG/s 關鍵字

    Web 服務名稱或 Web 方法名稱不能是 XLANG/s 中的關鍵字。 如果在 Web 服務名稱或是 Web 方法名稱中使用 XLANG/s 關鍵字,當您新增 Web 服務時就會出現編譯錯誤。 如需 XLANG/s 語言的保留字清單,請參閱 XLANG/s 保留字 (https://go.microsoft.com/fwlink/?LinkId=155765) 。

  • 參數類型的必要 XLANG/秒支援

    使用非 XLANG/s 支援的 Web 方法參數類型會導致編譯錯誤。 例如,BizTalk Server 不支援包含結構描述類型之單一維度陣列的參數。 此外,BizTalk Server不支援多維度陣列。 如需 XLANG/s 語言在 BizTalk Server 中保留的單字清單,請參閱XLANG/s 保留字組 (https://go.microsoft.com/fwlink/?LinkId=155765) 。

  • 避免新增包含 C# 關鍵字或識別碼的 Web 參考所造成的編譯錯誤

    當您使用[新增 Web 參考] 將 Web 參考新增至 BizTalk 專案時,BizTalk Server會將每個 Web 方法呼叫架構所需的架構類型轉換成架構。 BizTalk Server 會將這些結構描述加入到 Reference.xsd 中。 如果您的結構描述包含 C# 關鍵字的項目名稱,或者項目名稱不是有效的 C# 識別項,便可能會產生執行階段錯誤。 為了避免執行階段錯誤,請確定您使用的 Web 服務不包含 C# 關鍵字項目名稱或是無效的 C# 識別項。

  • 不支援多個服務/埠類型定義

    BizTalk Server 支援使用單一服務與連接埠類型定義來新增 Web 服務檔。 如果您使用多個服務與連接埠類型定義來新增 WSDL 檔案,可能會出現下列錯誤:

    Could not generate BizTalk files. Object reference not set to an instance of an object.

  • 支援使用 Web 服務公開的陣列

    BizTalk Server可以取用 Web 服務未BizTalk Server Web 服務所公開的一維和不規則陣列。 如需如何使用 Web 服務陣列的詳細資訊,請參閱 如何取用 Web 服務陣列 (https://go.microsoft.com/fwlink/?LinkId=155766) 。

    注意

    不支援多維度陣列語法。 例如, MyArray[1,5]

    注意

    BizTalk Server不支援取用 Web 服務所公開之DataSet物件的陣列。 XLANG/s 子服務原生支援 .NET DataSet 類別,但如果您建立 BizTalk 專案,其中包含 Web 服務的 Web 參考,該 Web 服務會公開 .NET DataSet 物件的陣列,當您嘗試編譯專案時會收到錯誤。

  • Web 方法參數必須是 Xml 可序列化

    在使用的 Web 服務中,所有參數都必須是可序列化的 XML。 如果您新增的 Web 方法中,包含的參數為不可序列化的 Xml,就會產生下列錯誤訊息:

    System.Xml.Element 必須是可序列化的 XML,才能做為訊息部分類型。

    注意

    不支援資料類型 XmlDocumentDataSet,但不支援 Xml Serializable。

  • 取用 Messaging-Only Web 服務

    取用僅限傳訊的 Web 服務時,所有BizTalk Server訊息本文元件名稱都必須符合 Web 方法參數名稱。 例如,如果 Web 服務的簽章是 WebMethod(MyType1 type1, MyType2 type2) ,元件名稱必須是 type1 和 type2,您可能會收到下列執行時間錯誤:

    Failed to retrieve the message part for parameter %1

    如需詳細資訊,請參閱 如何在 Messaging-Only 案例中使用 Web 服務 (https://go.microsoft.com/fwlink/?LinkId=155767) 。

  • 使用程式來設定 SOAP 傳送埠

    您可以在訊息內容中,使用程式來設定組態屬性。 您可以在協調流程或自訂管線元件中設定這些屬性,不論傳送埠是靜態還是動態。

    注意

    若要以程式設計方式設定靜態 SOAP 傳送埠的MethodName屬性,您必須在 [BizTalk Server 管理主控台] 的 [SOAP 傳輸屬性] 對話方塊的[Web 服務] 索引標籤中,將[方法名稱] 設定為[稍後指定]。

    如需 MethodName 屬性的詳細資訊,請參閱 如何動態設定已取用 Web 服務的 URI (https://go.microsoft.com/fwlink/?LinkID=155768) 。

  • 屬性規則

    如果組態屬性是設於接收管線的協調流程或自訂管線元件中,則會套用下列規則:

  • 將 Web 參考新增至包含多根架構的已取用 Web 服務,將會導致編譯錯誤

    如果您為衍生自已發佈 BizTalk 協調流程且協調流程包含具有多個根目錄的架構,將 Web 服務新增至專案的 Web 參考,則編譯專案時會發生錯誤。 如果您將 Web 參考加入由已發佈之 BizTalk 協調流程衍生出來的專案,請確定協調流程不包含任何多重根目錄的結構描述。

  • 使用 TypedDataSets 作為 Web 方法的參數

    當您打算使用 TypedDataSets 作為 Web 方法的參數時,需要先進行下列事項來支援此操作:

    1. 將 Web 參考加入 C# 專案,然後產生 Proxy。

    2. 建立 SOAP 傳送埠,然後指定傳送埠上的 Proxy 並選擇方法。

    3. 在協調流程中,定義晚期繫結埠與訊息類型。 在大部分不需要屬性升級或辨別欄位存取的情況下,類型可以定義為 XMLDocument。 選取使用此類型的 PassThrough 管線。

    4. 在 [BizTalk Server管理主控台] 的 [SOAP傳輸內容] 對話方塊的 [Web 服務] 索引標籤中,指定您想要使用該所建立的 Proxy。 您同時需要指定組件、類型與方法。

  • 將 Web 參考新增至包含預期 Generic-Based 參數之 Web 方法的已取用 Web 服務會導致編譯錯誤

    如果您為 Web 服務新增 Web 參考,其中包含預期泛型參數的 Web 方法,例如可為 Null 的參數,則會在編譯專案時發生錯誤。 不支援此連結方式。 您必須使用明確特製化來呼叫 XLANG/s 的泛型類別。

  • 使用新增 Web 參考產生 BizTalk 架構

    當您使用[新增 Web 參考] 將 Web 參考新增至 BizTalk 專案時,BizTalk Server會將每個 Web 方法呼叫架構所需的架構類型轉換成架構。 BizTalk Server 會將這些結構描述加入到 Reference.xsd 中。 若要確保 新增 Web 參考 正確產生 BizTalk 架構,Web 服務必須符合下列指導方針:

    • Web 方法應該有 SoapDocumentMethodAttribute ,而不是 SoapRpcMethodAttribute

    • Web 服務和方法必須使用常值系結,而不是編碼,例如[SoapDocumentMethod (Use=SoapBindingUse.Literal) ]。

    • Web 方法參數和傳回型別必須具有具有有效Namespace屬性的XmlRootAttribute,除非它們是原生 XSD 類型和 XmlNode 類型。

    • Web 方法不得使用SoapDocumentMethodAttribute中的RequestNamespaceResponseNamespace屬性。

    • Web 服務必須符合 Web 服務互通性 (WSI) Basic Profile version 1.1。

  • 新增 Web 參考不支援 Web 服務描述語言 (WSDL) Import 元素

    當您將 Web 參考加入含有 Import 項目的 WSDL 檔案時,加入 Web 參考功能將無法運作。

另請參閱

規劃 BizTalk Server 層