如何部署Silverlight及Web Service

今天我们将介绍的是部署Silverlight及Web Service,本文作者本来以为是简单的事情,其实还是经历了很多挫折。

AD:

一直通过Visual Studio测试Silverlight,本以为部署到服务器上是很简单的事。
没想到遇到了很多麻烦,用了整整一天的时间搜索解决方案。

先说部署到xp系统下本地IIS,服务器win2003也一样。

如图,右击虚拟目录->属性->HTTP头->MIME类型。添加

扩展名: .xap

MIME类型:application/x-silverlight-app

扩展名: .xaml

MIME类型:application/xaml+xml

这样就可以正常显示Silverlight了。

如果你调用了Web Service,

并且你的Web Service就在承载Silverlight的网站下。如图

这样不会有跨域操作的麻烦。

但是你不能直接引用localhost这样的本地服务。

否则部署在服务器上调用不成。

我的方法是把这个服务先部署在本地IIS

然后添加服务引用。

比如地址是http://127.0.0.1:8088/sl/LinqXmlService.asmx

这时候不存在跨域操作,先测试成功。

之后打开服务引用目录,如图

把这里的文件全部用vs打开,然后Ctrl+H做替换,选择所有打开文档。

http://127.0.0.1:8088/sl/LinqXmlService.asmx替换成

http://www.weiqi9d.com/LinqXmlService.asmx

即你的服务器地址。

我也不知道是怎样想到这样做的。试了一下,可以。

另外一个问题,服务器上仍然无法访问.xap不知道为什么。

我只好把.xap修改成.htm然后把这里也改了。

  1. <param name="source" value="ClientBin/SilverlightApplication2.htm"/> 

如图

这样,即使你的sl是用vs2010开发的,并且服务器没有安装.net 4.0也可以正常显示。

记录一下Silverlight调用Web Service的方法。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.  
  7. namespace SilverlightApplication2.Web  
  8. {  
  9.     /// <summary>  
  10.     /// WebService1 的摘要说明  
  11.     /// </summary>  
  12.     [WebService(Namespace = "http://tempuri.org/")]  
  13.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14.     [System.ComponentModel.ToolboxItem(false)]  
  15.     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。  
  16.     // [System.Web.Script.Services.ScriptService]  
  17.     public class WebService1 : System.Web.Services.WebService  
  18.     {  
  19.  
  20.         [WebMethod]  
  21.         public string HelloWorld()  
  22.         {  
  23.             return "Hello World";  
  24.         }  
  25.     }  
  26. }  
  27.  
  28. 调用   
  29. using System;  
  30. using System.Collections.Generic;  
  31. using System.Linq;  
  32. using System.Net;  
  33. using System.Windows;  
  34. using System.Windows.Controls;  
  35. using System.Windows.Documents;  
  36. using System.Windows.Input;  
  37. using System.Windows.Media;  
  38. using System.Windows.Media.Animation;  
  39. using System.Windows.Shapes;  
  40.  
  41. namespace SilverlightApplication2  
  42. {  
  43.     public partial class MainPage : UserControl  
  44.     {  
  45.         public MainPage()  
  46.         {  
  47.             InitializeComponent();  
  48.             this.Loaded += new RoutedEventHandler(Page_Loaded);  
  49.         }  
  50.         //创建Web Service对象  
  51.         ServiceReference1.LinqXmlServiceSoapClient ws = new ServiceReference1.LinqXmlServiceSoapClient();  
  52.         void Page_Loaded(object sender, RoutedEventArgs e)  
  53.         {  
  54.             AddEvent();  
  55.             Bind();  
  56.         }  
  57.         //注册事件,有点类似Ajax的回调  
  58.         private void AddEvent()  
  59.         {  
  60.             ws.HelloWorldCompleted += new EventHandler<ServiceReference1.HelloWorldCompletedEventArgs>(ws_HelloWorldCompleted);  
  61.         }  
  62.         //回调函数  
  63.         void ws_HelloWorldCompleted(object sender, ServiceReference1.HelloWorldCompletedEventArgs e)  
  64.         {  
  65.             button1.Content += e.Result + " hi";  
  66.             //MessageBox.Show(e.Result);  
  67.         }  
  68.         private void Bind()  
  69.         {  
  70.             ws.HelloWorldAsync();  
  71.         }  
  72.  
  73.     }  

希望对正在学习Silverlight的朋友有帮助,同时希望牛人解答我的疑惑。

原文链接:http://www.cnblogs.com/greatverve/archive/2010/12/23/silverlight-web-service.html

原文地址:https://www.cnblogs.com/leischen/p/2782853.html