Silverlight调用Web Service的方法
先展示一下我的Silverlight项目
新建Web Service,写两个方法,一个带输入参数。
大气象
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace HCLoad.Web
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
//带输入参数
[WebMethod]
public string HelloWorld1(string str)
{
return "Hello World" + str;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace HCLoad.Web
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
//带输入参数
[WebMethod]
public string HelloWorld1(string str)
{
return "Hello World" + str;
}
}
}
新建一个Silverlight用户控件,调用Web Service方法。
大气象
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 HCLoad
{
public partial class uc_WebService : UserControl
{
//创建Web Service对象
ServiceReference1.WebService1SoapClient ws = new HCLoad.ServiceReference1.WebService1SoapClient();
public uc_WebService()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded(object sender, RoutedEventArgs e)
{
AddEvent();
Bind();
}
//注册事件,有点类似Ajax的回调
private void AddEvent()
{
ws.HelloWorldCompleted += new EventHandler<ServiceReference1.HelloWorldCompletedEventArgs>(ws_HelloWorldCompleted);
ws.HelloWorld1Completed += new EventHandler<ServiceReference1.HelloWorld1CompletedEventArgs>(ws_HelloWorld1Completed);
}
//回调函数
void ws_HelloWorldCompleted(object sender, ServiceReference1.HelloWorldCompletedEventArgs e)
{
tbWeb.Text += e.Result + " hi";
}
void ws_HelloWorld1Completed(object sender, ServiceReference1.HelloWorld1CompletedEventArgs e)
{
tbWeb.Text += e.Result + " hi";
}
private void Bind()
{
ws.HelloWorldAsync();
ws.HelloWorld1Async("输入");//调用带输入参数的Web Service方法
}
}
}
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 HCLoad
{
public partial class uc_WebService : UserControl
{
//创建Web Service对象
ServiceReference1.WebService1SoapClient ws = new HCLoad.ServiceReference1.WebService1SoapClient();
public uc_WebService()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded(object sender, RoutedEventArgs e)
{
AddEvent();
Bind();
}
//注册事件,有点类似Ajax的回调
private void AddEvent()
{
ws.HelloWorldCompleted += new EventHandler<ServiceReference1.HelloWorldCompletedEventArgs>(ws_HelloWorldCompleted);
ws.HelloWorld1Completed += new EventHandler<ServiceReference1.HelloWorld1CompletedEventArgs>(ws_HelloWorld1Completed);
}
//回调函数
void ws_HelloWorldCompleted(object sender, ServiceReference1.HelloWorldCompletedEventArgs e)
{
tbWeb.Text += e.Result + " hi";
}
void ws_HelloWorld1Completed(object sender, ServiceReference1.HelloWorld1CompletedEventArgs e)
{
tbWeb.Text += e.Result + " hi";
}
private void Bind()
{
ws.HelloWorldAsync();
ws.HelloWorld1Async("输入");//调用带输入参数的Web Service方法
}
}
}
一些小技巧:
1.右击Silverlight项目,添加服务引用,点发现,可以找到你创建的Web Service
2.当你修改了Web Service要重新生成一下,并且右击Silverlight的引用更新服务。
3.修改web serivce端口与你web项目端口一致,否则会提示跨域操作。
在本机上调试asp.net程序时,设置端口。
右击项目->属性->Web->使用 Visual Studio 开发服务器(D) 把自动分配端口,修改为特定端口,输入指定的端口。
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。