zoukankan      html  css  js  c++  java
  • Silverlight4配合WCF net.tcp实现在线聊天应用攻略1

           Silverlight 4对WCF net.tcp协议的支持可谓是此版本较上版本最强大的突破,有大牛甚至认为net.tcp协议的支持是Silverlight kills WPF最重要的理由(出处)。

           网上也有类似的项目(如小笨蛋的WebChat),但是我一直没配通这些项目,小笨蛋提到的Online Template-Silverlight TCP Socket Policy现在貌似也没有了,所以索性自己研究着SDK写一个自己的聊天应用吧。

           首先,通读并理解Microsoft Silverlight 4 脱机文档是学习Silverlight 4最好的办法,先来试试其中的范例代码。Microsoft Silverlight 4 脱机文档中“网络和通信”一章对Silverlight 4各种通信方式做了详细的介绍,我关注其中的“在Silverlight中访问Web服务”一节中的“生成和访问双工服务”小节内容,文档中的内容已经很详尽就不再赘述,依照其中步骤进行就可以了,但由于我在配置过程中遇到不少问题,下面分享一下在实现此范例应用中需要注意的地方。

          1.SDK中提到Visual Studio 2010自带的Web Server不支持net.tcp activation功能,所以务必在承载WCF服务的Web项目中使用local IIS(必须是IIS 7以上版本)进行调试,并且需要在“打开或关闭Windows功能”中安装Microsoft .NET Framework 3.5.1中的Windows Communication Foundation HTTP Activation、Windows Communication Foundation Non-HTTP Activation和Web管理工具-IIS6管理兼容性-IIS元数据库和IIS6配置兼容性这三个功能;

          2.按照SDK中的提示在Web.config中进行bindings和services的配置,此处需要注意的是需要在第一个endpoint中指定address为WCF服务的地址(类似:net.tcp://localhost:4502/XXX/DuplexService.svc);

         3.在IIS建立虚拟目录后需要在设置站点对net.tcp的支持,具体在网站的高级属性中最后一行中添加,net.tcp,并在WCF项目所在虚拟目录中进行同样的设置,之后配置网站绑定,在网站绑定中添加net.tcp协议内容为4502:*;

         4.重要:在承载网站根目录下添加clientaccesspolicy.xml,内容为:

    <?xml version="1.0" encoding="utf-8"?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from http-request-headers="SOAPAction">
            <domain uri="*"/>
          </allow-from>
          <grant-to>
            <socket-resource port="4502" protocol="tcp" /> 
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>

         5.在向Silverlight项目中添加服务引用的时候有时会出现Could not load file or assembly 'System.ServiceModel.Activation.HttpModule’ from assembly…的错误,则需要在命令行中运行C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -iru重新安装ASP.NET 4.0;

         若还有其他易配置错误地方,我会随后补上。

         下篇介绍我自己参考WebChat和SDK中的项目自己写的Silverlight在线聊天小应用。

  • 相关阅读:
    shell 工具函数
    javascript 笔记
    vmware 全屏状态下与宿主机无缝切换
    shell 重定向
    PHP 执行服务器命令的类
    PHP 生成 Html
    PHP 打印输出调试类
    PHP 自动加载类
    getopt 示例
    linux alias 命令别名并输出其原始命令
  • 原文地址:https://www.cnblogs.com/chocstarfish/p/1765568.html
Copyright © 2011-2022 走看看