原文
http://www.cnblogs.com/WormCanFly/archive/2009/06/18/1506125.html
自己改的
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using System.ServiceModel;namespace PortDemo{ public class ServiceUtil { /// <summary> /// 調用遠端Web service /// </summary> /// <returns></returns> public static PortService.ServiceSoapClient GetDynamicClient() { //BasicHttpBinding 定義 BasicHttpBinding binding = new BasicHttpBinding( Application.Current.Host.Source.Scheme.Equals("https", StringComparison.InvariantCultureIgnoreCase) ? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None); binding.MaxReceivedMessageSize = int.MaxValue; binding.MaxBufferSize = int.MaxValue; //Endpoind 定義 EndpointAddress client = new EndpointAddress(GetHostUrl()); //返回web service執行個體:注意這裡利用了服務的建構函式的重載 return new PortService.ServiceSoapClient(binding, client); } /// <summary> /// 調用本地Web service /// </summary> /// <returns></returns> public static PortService.ServiceSoapClient GetmyService() { BasicHttpBinding binding = new BasicHttpBinding( Application.Current.Host.Source.Scheme.Equals("https", StringComparison.InvariantCultureIgnoreCase) ? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None); binding.MaxReceivedMessageSize = int.MaxValue; binding.MaxBufferSize = int.MaxValue; //取得web service路徑 EndpointAddress client = new EndpointAddress((new Uri(Application.Current.Host.Source, "../Service.asmx"))); return new PortService.ServiceSoapClient(binding, client); } public static string GetHostUrl() { //指定web service路徑 return "http://127.0.0.1:2222/Service.asmx"; } }}
使用、注釋部分不能用
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;namespace PortDemo{ public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); PortService.ServiceSoapClient sp = ServiceUtil.GetDynamicClient(); sp.HelloWorldAsync(); sp.HelloWorldCompleted += new EventHandler<PortService.HelloWorldCompletedEventArgs>(sp_HelloWorldCompleted); //PortService.ServiceSoapClient sp1 = ServiceUtil.GetmyService(); //sp1.HelloWorldAsync(); //sp1.HelloWorldCompleted += new EventHandler<PortService.HelloWorldCompletedEventArgs>(sp_HelloWorldCompleted1); } void sp_HelloWorldCompleted(object sender, PortService.HelloWorldCompletedEventArgs e) { MessageBox.Show(e.Result); } void sp_HelloWorldCompleted1(object sender, PortService.HelloWorldCompletedEventArgs e) { MessageBox.Show(e.Result); } }}