zoukankan      html  css  js  c++  java
  • WCF 基于TCP的服务在IIS7中寄宿

    参考博文:

    使用 WAS 扩展 HTTP 之外的 WCF 服务

    如何进行基于非HTTP的IIS服务寄宿

    HowTo: netTcpBinding on IIS and things to remember

    将使用netTcp绑定的WCF服务寄宿到IIS7上全记录

    在上面这些参考的博文中,都有提到如何部署,下面再结合个人实践重复一遍:

    目标服务器:IIS7,Windows 7

    1. 安装WAS (Windows Process Activation Service)服务和WCF的HTTP 和Non-Http的激活组件,默认情况是都没有安装的。

    1.1:WAS: Win+R——输入: OptionalFeatures.exe ,出现”打开或关门Window功能”的窗口,如下图

    clip_image001

    将(Windows Process Activation Service下的组件打上勾。

    1.2:WCF HTTP和No HTTP激活组件:在上图中将下面的组件也打上勾:

    clip_image002

    点击确定,开始上面选择的组件安装。

    2. IIS注册asp.net 4.0

    找到Visual Studio 命令提示(2010),输入:aspnet_regiis –i

    clip_image004

    3. 启动服务: NetTcpPortSharing ,NetTcpActivator ,Windows Process Activation Service

    Win+R——》输入services.msc,出现服务管理窗口,启动上面提到的服务(如果没有启动):

    clip_image006

    4. 编写WCF应用程序

    5. 部署

    l 在IIS7中新建网站 TCPDemo,执行编写WCF应用程序的解决方案文件夹

    l 给网站添加net.tcp的绑定,如下图:

    clip_image008

    绑定信息:809:* 表示从809进来的任何请求都处理

    l 添加应用程序,指向我们的服务项目

    l 为新添加的应用程序,启用net.tcp协议,如下图:

    clip_image010

    l 浏览服务,如下(用net.tcp提供服务元数据):

    clip_image012

    l 添加服务引用:

    clip_image014

    到此基本完成。

    遇到过的问题:

    1, 在浏览器中浏览服务时,提示:

    Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

    原因:在安装WAS 和WCF 的Http 或non-Http激活组件时,将IIS的.net framework版本更新为3.0的版本了;而我们的wcf应用程序是在.net framework 4.0上创建的。

    解决方法:IIS注册asp.net4.0.

    2, 在浏览器中,浏览服务时:

    找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址。注册的基址方案是 [http]

    该现象的原因时:没有给网站添加net.tcp的绑定。

    3, 添加服务应用时提示:

    无法调度消息,因为终结点地址“net.tcp://szc0292:809/TCP_IIS/Service1.svc/mex”上的服务对该地址的协议不可用。

    我的遇到该现象的原因是:

    l 没有改网站下的应用程序启用net.tcp协议

    l NetTcpPortSharing ,NetTcpActivator 2个服务在不同的进程里面,一个指向3.0的SMSvcHost.exe,一个指向的4.0的SMSvcHost.exe;解决方法:将指向3.0 的SMSvcHost.exe服务路径该为何4.0的;WIN +R—》cmd——》输入:

    Sc config NetTcpActivator binpath= "C:WindowsMicrosoft.NETFrameworkv4.0.30319SMSvcHost.exe";在重新启动NetTcpActivator服务,问题解决。

    4,不能将服务部署在网站上,必须在网站下新建应用程序执行要部署的TCP服务。

    代码下载:http://files.cnblogs.com/webJingGao/TCP%40IIS.rar

  • 相关阅读:
    通过GetProcAddress函数动态调用dll中地函数,是否必须通过extern C声明导出函数?
    函数指针与typedef
    MSDN DLL 综合
    DLL
    Firefox浏览器兼容Javascript脚本的方法
    C++中extern “C”含义深层探索
    生成索引脚本
    使用Go语句生成数值表
    避免使用count(*)获得表的记录数,解决其延迟问题
    在程序开发中怎样写SQL语句可以提高数据库的性能
  • 原文地址:https://www.cnblogs.com/webJingGao/p/3228066.html
Copyright © 2011-2022 走看看