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 WebService1
13 {
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.WebService
25 {
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 ServiceClient
13 {
14 class Program
15 {
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 : SoapHttpClientProtocol
33 {
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 }