一些小技巧: 1.右击Silverlight项目,添加服务引用,点发现,可以找到你创建的Web Service 2.当你修改了Web Service要重新生成一下,并且右击Silverlight的引用更新服务。 3.修改web serivce端口与你web项目端口一致,否则会提示跨域操作。



先展示一下我的Silverlight项目

Silverlight调用Web Service的方法_ajax

新建Web Service,写两个方法,一个带输入参数。


Silverlight调用Web Service的方法_Silverlight_02Silverlight调用Web Service的方法_web service_03大气象


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;

        }

    }

}


新建一个Silverlight用户控件,调用Web Service方法。


Silverlight调用Web Service的方法_Silverlight_02Silverlight调用Web Service的方法_web service_03大气象


using System;

using System.Collections.Generic;

using System.Linq;

using ;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using ;

using .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) 把自动分配端口,修改为特定端口,输入指定的端口。

Silverlight调用Web Service的方法_跨域_06