先展示一下我的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) 把自动分配端口,修改为特定端口,输入指定的端口。