文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>[Silverlight入门系列]独立部署WCF Ria Service(单独/跨域)

[Silverlight入门系列]独立部署WCF Ria Service(单独/跨域)

时间:2011-02-22  来源:Mainz

1. 下载WCF Ria Service Toolkit Oct2010: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a23325ef-7b1f-4c92-9fd5-ffee48f7c7bc

2. 在vs2010中新建一个silverlight4的application,一个空的项目即可。

3. 由于WCF Ria Service是依托于网站的,所以在vs2010中新建一个Asp.net web application。在这个项目中添加一个ADO.net Data Entity Model(链接到数据库,这个过程怎么弄可以自己google一下)

4. 添加一个Domain Service Class,名字就叫 DomainService1,就是针对上一步的entity的。会自动生成几个方法。

5. 添加一个Silverlight enabled WCF Service:

    

6. 在里面写一个方法,调用上面第四步domain service的方法,代码:

 using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;

namespace WebApplication1
{
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class SLEnalbedWcfService1
    {
        DomainService1 s1 = new DomainService1();

        [OperationContract]
        public string GetFirstTestRecord()
        {
            return s1.GetTestList().First().RecordName;
        }

        // Add more operations here and mark them with [OperationContract]
    }
}

 

 7. 添加一个文件,叫clientaccesspolicy.xml,内容如下,是用来解决跨域的问题支持跨域访问的:

 

<?xml version="1.0" encoding="utf-8"?> 
<access-policy> 
  <cross-domain-access> 
    <policy> 
      <allow-from http-request-headers="*"> 
        <domain uri="*"/> 
      </allow-from> 
      <grant-to> 
        <resource path="/" include-subpaths="true"/> 
      </grant-to> 
    </policy> 
  </cross-domain-access> 
</access-policy>

 

 

8. 启动网站,(或者在IIS部署该网站)

9. 在IE中尝试访问该网站,并访问WCF Service的svc地址,例如:http://localhost:7354/SLEnalbedWcfService1.svc

   

10. 点击里面的第一个链接,会显示wsdl的内容,拷贝url:就是IE地址栏里面wsdl的地址

      

11. 在先前建立的silverlight项目中,右键点击silverlight项目(不是托管网站.web那个),添加服务引用(Add Service Reference)

12. 输入刚才拷贝的wsdl地址,点击Go,输入一个你希望的nameSpace(随便),如图:

      

13. vs2010会自动给你生成代理类,并修改config文件

14. 在MainPage.xaml.cs里面就可以调用这个服务的方法了:

 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 SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        //ServiceReference1 是12步你输入的namespace
        ServiceReference1.SLEnalbedWcfService1Client client = new ServiceReference1.SLEnalbedWcfService1Client();

        public MainPage()
        {
            InitializeComponent();

            //Silverlight跨域调用wcf ria service肯定是异步的(用Winform调用wcf ria service可以是同步的!)
            client.GetFirstRecordCompleted += delegate(object sender, ServiceReference1.GetFirstRecordCompletedEventArgs e) {
                if (e.Error == null)
                    this.label2.Content = e.Result;
                else
                    this.label2.Content = e.Error.Message;
            };
            client.GetFirstRecordAsync(); 
        }
    }
}

 

15. 如果您是IIS中,还有其他的权限设置,另外还要启动WCF服务。

16. 单独部署WCF Ria Service,跨域问题的解决,等等,这儿有一些其他的国外资源:

        http://blogs.msdn.com/b/brada/archive/2009/11/22/ria-services-a-domainservice-is-a-wcf-service-add-service-reference.aspx

        http://timheuer.com/blog/archive/2009/12/10/tips-to-deploy-ria-services-troubleshoot.aspx

        http://blogs.msdn.com/b/drnick/archive/2009/12/30/deploying-wcf-ria-services-system-files.aspx

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载