原文
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);
}
}
}