ID Artikel: 330600 - Kajian Terakhir: 03 Oktober 2011 - Revisi: 2.0

CARA: Menggunakan unsur-unsur XmlDocument ketika dilewatkan ke atau kembali dari WebMethods dengan menggunakan Visual C#.NET

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua
Artikel ini merujuk kepada Microsoft berikut.NET Kerangka perpustakaan kelas namespaces:
  • System.xml

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan bagaimana untuk menulis kode dalam.NET aplikasi untuk mengeksekusi metode layanan Web yang mengambil XmlDocument parameter, atau kembali itu XmlDocument objek.

Pendahuluan

Kapan XmlDocument objek yang dilewatkan sebagai parameter ke layanan Web metode, atau yang kembali dari layanan Web metode, mereka mengerahkan sebagai XmlNode objek. The XmlDocument dan XmlNode jenis dilaksanakan dalam System.xml namespace)XmlDocument berasal dari XmlNode).

Jika manipulasi data yang mengerahkan sebagai XmlNode (yang dilewatkan ke metode layanan Web, atau kembali oleh layanan Web metode) mengharuskan Anda menggunakan API XmlDocument yang tidak terkena oleh XmlNode jenis, Anda harus memuat data dalam XmlDocument objek. Untuk melakukannya, gunakan salah satu dari metode berikut ini:
  • XmlDocument.LoadXml(XmlNode.OuterXml)
  • XmlDocument.ImportNode(XmlNode, true)
Contoh dalam artikel ini menunjukkan bagaimana untuk menggunakan metode ini

Menciptakan metode Web

  1. Di Microsoft Visual Studio.NET, membuat baru Visual C# .NET ASP.NET layanan Web proyek. Untuk melakukannya, ikuti langkah-langkah berikut:
    1. Pada Berkas menu, klik Baru, lalu klik Project.
    2. Dalam Jenis proyek Daftar, klik Visual C# proyek, lalu klik ASP.NET Web Layanan dalam Pola acu panel.
  2. Dalam Lokasi kotak teks, ketikXMLDocService untuk mengubah nama default (default nama adalah WebService1).
  3. Mengubah nama layanan Web standar yang dibuat dari Service1.asmx untuk XMLDocService.asmx.
  4. Klik Klik di sini untuk beralih ke tampilan kode dalam lingkungan desainer untuk beralih ke tampilan kode.
  5. Menentukan metode yang mengembalikan XMLDocument objek. Setiap metode yang layanan akan mengekspos harus ditandai dengan WebMethod atribut. Tanpa atribut ini, layanan tidak akan memaparkan metode.

    Catatan Tidak setiap metode harus WebMethod atribut. Atribut ini dapat digunakan untuk menyembunyikan beberapa implementasi rincian yang disebut oleh Web publik layanan metode atau jika WebService kelas yang digunakan dalam aplikasi lokal. Meskipun aplikasi lokal dapat menggunakan setiap kelas publik, hanya WebMethod metode dapat diakses dari jarak jauh sebagai XML Web layanan.
  6. Menambahkan metode layanan Web berikut untuk XMLDocService kelas yang baru saja dibuat:
    [WebMethod]
    public XmlDocument GetXmlDocument()
    {
    // Create an XmlDocument object.
    XmlDocument xmlDocumentObject = new XmlDocument();
    XmlDocumentObject.LoadXml("<book genre=\"novel\" publicationdate=\"1997\" " +
    "      ISBN=\"1-861001-57-5\">" +
    "  <title>Pride And Prejudice</title>" +
    "  <author>" +
    "    <first-name>Jane</first-name>" +
    "    <last-name>Austen</last-name>" +
    "  </author>" +
    "  <price>24.95</price>" +
    "</book>"); 
    
    // Return the created XmlDocument object.
    return( XmlDocumentObject );
    }
    [WebMethod]
    public string GetFirstName( XmlNode XmlNodePassed )
    {
    // Create a new XmLDocument object.
    XmlDocument XmlDocumentObject = new XmlDocument();
    
    // Load the XmlNode into the XmlDocument object.
    XmlDocumentObject.LoadXml( XmlNodePassed.OuterXml );
    
    // Find the first name of the author.
    XmlNodeList XmlNodeListObj = XmlDocumentObject.GetElementsByTagName( "first-name" );
    
    // Return the first name.
    return XmlNodeListObj[ 0 ].ChildNodes[ 0 ].Value;
    }
  7. Pada Bangun menu, klik Bangun Solusi untuk membangun layanan Web.
  8. Buka halaman layanan XMLDocService.asmx XML Web untuk menguji layanan XML Web. Jika Anda mengatur komputer lokal untuk meng-host halaman, URL adalah http://localhost/XMLDocService/XMLDocService.ASMX. Microsoft ASP.NET Runtime kembali halaman bantuan layanan XML Web yang menjelaskan XML Web layanan. Anda juga dapat menggunakan halaman ini untuk menguji berbagai layanan XML Web metode.

Mengkonsumsi metode Web

  1. Dalam Visual Studio.NET, klik Baru padaBerkas menu, dan kemudian klik Project.
  2. Dalam Jenis proyek Daftar, klikVisual C# proyek, lalu klik Konsol Aplikasi dalam Pola acu panel.
  3. Dalam aplikasi baru, menambahkan referensi ke XMLDocService Layanan web.

    Langkah ini menciptakan kelas proxy pada komputer klien. Setelah kelas proxy dibuat, Anda dapat membuat benda yang berdasarkan kelas. Masing-masing metode panggilan yang dibuat dengan objek berlalu untuk uniform resource identifier (URI) dari layanan Web sebagai permintaan SOAP.
    1. Pada Project menu, klik Tambahkan Referensi web.
    2. Dalam Menambahkan referensi Web kotak dialog, Ketik URL layanan Web dalam Alamat kotak teks, dan kemudian tekan ENTER. Jika Anda mengatur komputer lokal untuk host layanan Web, URL adalah http://localhost/XMLDocService/XMLDocService.asmx.
    3. Klik Menambahkan referensi. Atau, Anda dapat mengetik URL penemuan file (XMLDocService.vsdisco) atau klik Referensi web pada Server Web lokal dalam pane kiri untuk memilih layanan XMLDocService dari daftar.
    4. Memperluas Referensi web bagian dari Solusi Explorer dan catatan namespace yang digunakan.
  4. Membuat sebuah instance dari objek proxy untuk XMLDocService Layanan web. Paste kode berikut di Utama fungsi:
    localhost.XMLDocService myXMLDocService = new localhost.XmlDocService();
  5. Untuk memanggil metode objek proxy, menggunakan berikut kode:
    XmlDocument myXmlDocumentObject = myXMLDocService.GetXmlDocument();
  6. Pada Bangun menu, klik Bangun Solusi untuk membangun aplikasi konsol.
  7. Anda menerima pesan galat membangun berikut:
    Tidak dapat secara implisit mengubah tipe 'System.Xml.XmlDocument' untuk 'System.Xml.XmlNode'
  8. Menggantikan metode doa dengan berikut:
    XmlNode myXMLNodeObject = myXMLDocService.GetXmlDocument();
  9. Pada Bangun menu, klik Bangun Solusi untuk membangun aplikasi konsol. Anda dapat berhasil membangun aplikasi.
  10. Memuat data dalam kembali XmlNode ke XmlDocument objek menggunakan yang ImportNode metode:
    XmlDocument myXmlDocumentObject = new XmlDocument();
    myXmlDocumentObject.AppendChild(myXmlDocumentObject.ImportNode(myXMLNodeObject,true));
  11. Membuat panggilan ke layanan Web metode yang mengembalikan nama penulis:
    string strFirstName = WebServiceObject.GetFirstName( XmlDocumentObject );
  12. Mencetak nama penulis pada konsol:
    Console.WriteLine( "The first name of the author is: " +strFirstName );
  13. Pada Bangun menu, klik Bangun Solusi untuk membangun aplikasi konsol.
  14. Pada Debug menu, klikMenjalankan untuk menjalankan aplikasi konsol.

Mengatasi masalah

Jika Anda menetapkan nilai kembali metode layanan Web yang kembali XmlDocument objek lain XmlDocument objek dalam aplikasi klien, Anda menerima berikut pengecualian pesan galat:
Tidak dapat secara implisit mengubah jenis 'System.Xml.XmlNode' untuk 'System.Xml.XmlDocument'
Kesalahan terjadi karena down-casting tidak diperbolehkan di Microsoft.NET. Kembali XmlDocument mengerahkan sebagai XmlNode. Anda tidak dapat menetapkan XmlNode keberatan XmlDocument objek karena XmlDocument mewarisi dari XmlNode.

Demikian pula, untuk mengekspos XmlDocument parameter, Anda harus menentukan parameter sebagai XmlNode objek. Jika Anda menyatakan parameter sebagai XmlDocument, Anda menerima pesan galat pengecualian berikut:
Cast tertentu tidak sah
Pengecualian terjadi karena The XmlDocument yang dikirimkan dari klien mengerahkan sebagai XmlNode dan kode mencoba untuk menetapkan XmlNode keberatan XmlDocument parameter objek (bawah-casting tidak diperbolehkan di.NET).

REFERENSI

Untuk informasi tambahan tentang cara menciptakan layanan Web, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
308359  (http://support.microsoft.com/kb/308359/EN-US/ ) CARA: Menulis layanan Web sederhana dengan menggunakan Visual C#.NET

Berlaku bagi:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Web Services Enhancements for Microsoft .NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Kata kunci: 
kbclient kbhowtomaster kbhowto kbmt KB330600 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:330600  (http://support.microsoft.com/kb/330600/en-us/ )