首页 > 代码库 > .NET 创建 WebService

.NET 创建 WebService

服务器端代码
 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Services; 6 using System.Xml.Serialization; 7 using System.Web.Services.Protocols; 8 using System.IO; 9 using System.Xml;10 11 12 namespace WebService113 {14     /// <summary>15     /// Service1 的摘要说明16     /// </summary>17 18     [WebService(19         Namespace = "http://asn.test.cn/", 20         Description="this is a test service!")]21     [System.ComponentModel.ToolboxItem(false)]22     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。23     // [System.Web.Script.Services.ScriptService]24     public class Service1 : System.Web.Services.WebService25     {26 27         [WebMethod]28         [SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Wrapped)]29         public void PurchaseOrder(30             [XmlAttribute] String ID,31             DateTime Date,32             int Amount,33             out String ReceiptID)34         {35             ReceiptID = "12345";36             return;37         }38 39 40 41         [WebMethod]42         [return: XmlElement("PurchaseOrderRecipt")]43         [SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Bare, OneWay = true)]44         public void PurchaseOrderStyleBare(PO pOrder)45         {46             FileStream fileStream = new FileStream("c:/aa.txt",FileMode.Append ,FileAccess.Write);47             StreamWriter writer = new StreamWriter(fileStream);48             writer.WriteLine(pOrder.ID);49             writer.WriteLine(pOrder.Date.ToString());50             writer.Close();51             return ;52         }53 54 55         [WebMethod]56         [SoapDocumentMethod(ParameterStyle = SoapParameterStyle.Wrapped)]57         public double Divide(double x, double y)58         {59             if (y == 0)60             {61                 XmlDocument doc = new XmlDocument();62                 doc.LoadXml("<BadStuff>you shouldn‘t try to divide by zero. </BadStuff>");63                 XmlQualifiedName code = new XmlQualifiedName("Sample", "http://sample");64                 SoapException ex = new SoapException("Can not divide by zero", code, "TheActor", doc);65 66                 throw ex;67             }68             return x / y;69         }70     }71 }

 




客户端调用代码
 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using ServiceClient.ServiceTest; 6 using System.Web.Services; 7 using System.Xml.Serialization; 8 using System.Web.Services.Protocols; 9 10 11 12 namespace ServiceClient13 {14     class Program15     {16         static void Main(string[] args)17         {18 19 20             Service1SoapClient server = new Service1SoapClient();21             double resl = server.Divide(4, 3);22             Console.WriteLine(resl);23 24 25             ServiceTestClient client = new ServiceTestClient();26             double resl1 =  client.Divide(5, 3);27             Console.WriteLine(resl1);28         }29     }30 31     [WebServiceBinding("Service1Soap", "http://asn.test.cn/")]32     public class ServiceTestClient : SoapHttpClientProtocol33     {34         public ServiceTestClient()35         {36             this.Url = "http://localhost:49559/Service1.asmx";37         }38 39         [SoapDocumentMethod("http://asn.test.cn/Divide"]40         public double Divide(double x, double y)41         {42             Object[] args = { x, y};43             Object[] responseMsg = this.Invoke("Divide", args);44 45             return (double)responseMsg[0];46         }47     }48 }

 

 

 

.NET 创建 WebService