怎么部署Silverlight及Web服务

小编给大家分享一下怎么部署Silverlight及Web Service,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

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

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

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

扩展名: .xap

MIME类型:application/x-silverlight-app

扩展名: .xaml

MIME类型:application/xaml+xml

怎么部署Silverlight及Web Service

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

如果你调用了Web Service,

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

怎么部署Silverlight及Web Service

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

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

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

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

然后添加服务引用。

比如地址是

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

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

怎么部署Silverlight及Web Service

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

把替换成

即你的服务器地址。

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

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

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

如图怎么部署Silverlight及Web Service

怎么部署Silverlight及Web Service

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

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

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using System.Web.Services;   namespace SilverlightApplication2.Web  {      ///       /// WebService1 的摘要说明      ///       [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";          }      }  }   调用   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 SilverlightApplication2  {      public partial class MainPage : UserControl      {          public MainPage()          {              InitializeComponent();              this.Loaded += new RoutedEventHandler(Page_Loaded);          }          //创建Web Service对象          ServiceReference1.LinqXmlServiceSoapClient ws = new ServiceReference1.LinqXmlServiceSoapClient();          void Page_Loaded(object sender, RoutedEventArgs e)          {              AddEvent();              Bind();          }          //注册事件,有点类似Ajax的回调          private void AddEvent()          {              ws.HelloWorldCompleted += new EventHandler

怎么部署Silverlight及Web服务