共用方式為


根據 WSDL 檔的 Web 服務端點

更新:2007 年 11 月

您可以使用合約導向的方法來定義服務行為。您可以從 Web 服務描述語言 (WSDL) 檔案建立 Web 服務提供者端點,以執行這項工作。您也可以將現有的 Web 服務提供者端點設定為符合 WSDL 檔案。

注意事項:

您可以使用 .disco 檔案執行這些工作。這個版本所支援的 WSDL 檔案,僅有其包含了單一 WSDL 繫結和參考單一 Web 服務的 .disco 檔案才會支援。如需詳細資訊,請參閱應用程式之間的通訊

如需詳細資訊,請參閱下列章節:

  • 從 WSDL 檔案建立的 Web 服務端點

  • 使 Web 服務端點符合 WSDL 檔案

  • 根據 WSDL 檔的 Web 服務端點

  • 在作業簽章中參考的自訂類型

如需合約導向服務設計的詳細資訊,請造訪 MSDN Online 的<合約優先的 Web 服務互通性>網頁https://go.microsoft.com/fwlink/?LinkId=49584 (英文)。

從 WSDL 檔案建立的 Web 服務端點

您可以在 ASP.NET 應用程式和系統上建立以 WSDL 為基礎的端點。這個端點會出現在應用程式系統上。會填入由 WSDL 檔案參考的作業簽章。如果已實作相關聯的應用程式,則這些作業簽章也會出現在 Web 服務類別檔案中。如果這些簽章參考任何自訂類型,其他類別檔案也會出現在應用程式的專案中。如需詳細資訊,請參閱在作業簽章中參考的自訂類型。

注意事項:

只可以實作應用程式,不能實作系統。

若從 WSDL 檔案建立 Web 服務提供者端點,所產生的結果將相當於使用 Wsdl.exe 命令列公用程式加上 /server 選項所產生的結果。如需詳細資訊,請參閱下列項目:

使 Web 服務端點符合 WSDL 檔案

您可以使現有的 Web 服務提供者端點符合 WSDL 檔案。這個動作會加入或變更任何現有的作業簽章,使他們符合 WSDL 檔案。如果已實作相關聯的應用程式,這個動作也可能會影響程式碼中的作業簽章和型別名稱。資料集內的巢狀型別尚未符合。

注意事項:

符合系統成員的端點會確實符合基礎端點定義。這個動作會修改其他系統中該定義的使用。

雖然不會變更任何方法主體程式碼,作業簽章和型別名稱的變更仍會導致方法主體無法再進行編譯。因此,請檢閱您的程式碼。識別修正任何編譯錯誤所需要的變更。如需詳細資訊,請參閱在 Web 服務端點符合 WSDL 檔案後的程式碼變更

根據 WSDL 檔的 Web 服務端點

WSDL 檔案會指定提供和消費 Web 服務的需求。它可當成是提供者和消費者之間的合約。以相同版本 WSDL 檔案為基礎的 Web 服務端點也可讓您取代那些端點。如需詳細資訊,請參閱 Web 服務端點替換

WSDL 檔案中的 WSDL 繫結定義會描述 Web 服務所提供的作業。Web 服務提供者端點表示了這個 WSDL 繫結。如果相關聯的 ASP.NET 應用程式啟用了 WSDL 檔案產生,Visual Studio 便會針對該應用程式上每個 Web 服務產生一個新的 WSDL 檔案 (如果已實作應用程式)。Visual Studio 也會針對相關聯的 Web 服務消費者應用程式,使用這個 WSDL 檔案產生 Web 參考 (如果已實作應用程式)。如需詳細資訊,請參閱 HOW TO:控制 ASP.NET Web 服務的 WSDL 檔案產生

發行 Web 服務的 WSDL 檔案之後,對 Web 服務定義所做的每項變更都會被視為新的 WSDL 繫結。

秘訣

如果要變更 Web 服務定義,則要變更 WSDL 繫結名稱、WSDL 繫結命名空間,或兩者都變更。變更 Web 服務定義但不變更它的 WSDL 繫結名稱或命名空間,可能會造成使用者仍然不曉得該 Web 服務已不與目前連接或先前連接的應用程式相容。WSDL 服務名稱和 WSDL 繫結名稱的預設值為 "WebServiceN",其中 "N" 表示序號。不過,實作應用程式後,只要刪除 Web 服務類別檔案中的 WSDL 繫結名稱,預設值就會變更為 "WebServiceNSoap"。WSDL 服務命名空間和 WSDL 繫結命名空間的預設值為 "http://tempuri.org"。WSDL 服務描述和 WSDL 繫結位置屬性沒有預設值。WSDL 繫結名稱的預設值為 "WebServiceN"。

當您在未實作的 Web 服務提供者端點上變更 WSDL 繫結名稱或繫結命名空間時,任何已連接和未實作之消費者端點的對應屬性都會自動更新,或在重新連接時更新。不過,在實作的 Web 服務提供者端點上變更這些屬性時,並不會立即更新任何已連接和實作的 Web 服務消費者端點。因此,您可以為這些消費者端點手動更新這些屬性。

在作業簽章中參考的自訂類型

Web 服務端點中的作業簽章可能會參考 CLR 類別,此類別負責處理 WSDL 檔案或相關 XML結構描述檔案中,所參考之複雜 XML 類型的 XML 序列化。如果尚未實作相關聯的應用程式,Visual Studio 則會在實作時針對這些類別產生程式碼檔案。它會與對應的 Web 服務以及應用程式專案檔一起產生這些檔案。如果已經實作應用程式,則會將這些類別的程式碼檔案加入至現有專案中。如需詳細資訊,請參閱應用程式圖表上的 ASP.NET 應用程式概觀

注意事項:

當您將以 WSDL 為基礎的 Web 服務端點複製至另一個應用程式時,Visual Studio 則只複製作業簽章。如果已經實作接收端應用程式,就不會複製其他 CLR 類別的程式碼檔案。如果尚未實作接收端應用程式,則不會在實作時針對這些類別產生程式碼檔案。若要避免這個情形,請從與您要複製之端點的相同 WSDL 或 .disco 檔案建立端點。

在部分 XML 結構描述中,Web 服務類別和資料序列化類別還需要其他序列化屬性 (Attribute),以確保 XML 格式是正確的。不過,以 WSDL 為基礎的 Web 服務提供者端點只支援其中少數序列化屬性。在少數情況中,為 Web 服務端點產生的結果 WSDL 檔和結果 XML 訊息,可能不會與用來建立 Web 服務提供者端點的原始 WSDL 檔一致。

秘訣

如果發生這些問題,請使用 Wsdl.exe 公用程式產生 Web 服務類別和資料序列化類別,而不要從 WSDL 檔案建立 Web 服務提供者端點。不過,您必須手動將產生的程式碼加入至專案,然後再建立必要的 .asmx 檔。正確的 Web 服務提供者端點隨即出現。這可讓您使用設計工具編輯端點。

下列清單含有支援這些序列化屬性的詳細資訊:

  • 這些 XML 序列化屬性會加入至為複雜 XML 型別所產生的類別:SerializableAttribute、SoapTypeAttribute、XmlIncludeAttribute、XmlRootAttribute 和 XmlTypeAttribute。

  • 這些 XML 序列化屬性會加入至類別欄位:XmlAnyAttribute、XmlArrayAttribute、XmlArrayItemAttribute、XmlAttributeAttribute、XmlChoiceIdentifierAttribute、XmlElementAttribute、XmlEnumAttribute、XmlIgnoreAttribute、XmlNamespaceDeclarationsAttribute 和 XmlTextAttribute。

  • 序列化屬性不會套用至 Web 方法的傳回型別。

  • 序列化屬性不會套用至 Web 方法的參數。

  • 下列 SOAP 編碼的序列化屬性不會套用至這些類別:SoapElementAttribute、SoapIgnoreAttribute、SoapAttributeAttribute、SoapAttributeOverrides、SoapAttributes、SoapEnumAttribute 和 SoapIncludeAttribute。

  • 需要複雜 XML 型別的屬性引數會以該型別的完整名稱,產生為字串型別。這樣會導致需要加以修正的編譯器錯誤。

    例如,Visual Basic 中的 <XmlIncludeAttribute(GetType("ClassName"))> 會產生為 <XmlIncludeAttribute("ClassName")>,而 Visual C# 中的 [XmlIncludeAttribute(typeof("ClassName"))] 則產生為 [XmlIncludeAttribute("ClassName")]。

請參閱

工作

HOW TO:在應用程式中加入端點

HOW TO:使 Web 服務端點符合 WSDL 檔案

概念

應用程式上的端點概觀