设为首页 收藏本站
查看: 833|回复: 0

[经验分享] WCF服务在IIS7.0中用WAS托管

[复制链接]

尚未签到

发表于 2018-12-9 08:28:45 | 显示全部楼层 |阅读模式
WCF服务在IIS7.0中用WAS托管

WAS托管:Windows激活服务(WAS)是一个系统服务,是IIS7的一部分,也可以独立的安装与配置。IIS与WAS的主要区别在于WAS并不局限使用HTTP,它支持所有可用的WCF传输协议、端口与队列,支持的协议包括:HTTP、TCP、IPC、MSMQ。  WAS提供了大量基于自托管的强大功能,包括应用程序池、回收机制、空闲时间管理(Idle Time Mannagement)、身份管理(Identity Management) 以及隔离(Isolation);宿主进程可以根据情况选择使用这些功能。
  下面我们通过一个DEMO来介绍WAS托管(net.tcp绑定)。
  开发环境:Visual Studio 2010 + Net Framework 4.0
  运行环境:Windows Server 2008 R2 + IIS7 + WAS
  1、创建一个WCf Service Library,主要代码如下:
    //接口代码     [ServiceContract(Namespace = "http://schemas.xinhaijulan.com/demos/WASHost")]     public interface IWASHostService     {         [OperationContract]         string HelloWCF(string str);     }      //实现类代码     public class WASHostService : IWASHostService     {         public string HelloWCF(string str)         {             return string.Format("Get message from client is : {0}", str);         }     }
  
  2、创建一个ASP.NET空白网站,添加Service Library引用,并添加服务文件文件[WASHostService.svc],代码如下:

  
  3、添加Web.config文件如下:
                                                                                                                                                                                                                                                                                                               
  
  4、编译网站,success,然后在命令行输入:inetmgr,打开IIS管理器,在Default Web Site中添加应用程序:WASHostService,目录指刚才创建的WebSite,并且指定应用程序池,至此,网站配置基本结束,然而我们尚未配置WAS。
  5、安装WAS与WCF激活【HTTP激活和非HTTP激活】:打开服务管理器->添加功能->选择.NET FrameWork 3.5.1和Windows 进程激活服务,如下图:
  然后点击下一步,然后安装。因我已经安装,所以您看到的界面是已经安装的界面,所以下一步和安装按钮不可用。
  6、在安装完成后,我们可以在服务里面看到NetTcpActivator、NetPipeActivator、NetTcpPortSharing和WAS服务已经启动,如下图:
  7、至此,WAS与WCF激活【HTTP激活和非HTTP激活】安装完毕并且成功,下面我们将看到在Default Web Site中会自动绑定多个协议,命令行输入inetmgr,打开IIS管理器,右键点击Drfaul Web Site,点击绑定,如下图:

  如果点击绑定后没有看到net.tcp等非http协议,则可以通过点击右面的添加来添加非http协议绑定,如下图:
  以上为添加非http绑定,除此还需要进行启动net.tcp绑定:点击WASHostService->管理应用程序->高级设置,启动net.tcp绑定,如下图:
  除了通过IIS管理器添加非http绑定,还可以通过命令行的方式添加非http绑定。
  8、命令行添加绑定:在命令行输入cmd 进入到:C:\Windows\System32\inetsrv>目录,然后输入appcmd,系统会给出appcmd的帮助信息,然后输入appcmd list site。
  8.1、设置端点tcp绑定,输入:appcmd set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']。
  8.2、启用tcp绑定,输入appcmd list app,根据列出的应用程序,再输入:appcmd set app "Default Web Site/WASHostService" /enabledProtocols:http,net.tcp。
  命令行添加绑定过程如下:
Microsoft Windows [版本 6.1.7600] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。  C:\Users\Administrator>cd\  C:\>cd windows  C:\Windows>cd system32  C:\Windows\System32>cd inetsrv  C:\Windows\System32\inetsrv>appcmd 通用 IIS 命令行管理工具。  APPCMD (命令) (对象类型)   支持的对象类型:    SITE      虚拟站点的管理   APP       管理应用程序   VDIR      管理虚拟目录   APPPOOL   管理应用程序池   CONFIG    管理常规配置节   WP        管理工作进程   REQUEST   管理 HTTP 请求   MODULE    管理服务器模块   BACKUP    管理服务器配置备份   TRACE     使用失败请求跟踪日志  (要列出每个对象支持的命令,请使用 /?,例如“appcmd.exe site /?”)  常用参数:  /?               显示上下文相关帮助消息。  /text    以文本格式(默认)生成输出。                  /text:* 在详细信息视图中显示所有对象属性。                  /text: 显示每个对象的                  指定特性的值。 /xml             以 XML 格式生成输出。                  使用此参数生成的输出可发送至                  以 /in 模式运行的其他命令。 /in or -         自标准输入读取和操作 XML 输入。                  使用此参数可操作运行于 /xml 模式的                  其他命令生成的输入。 /config      显示所显示对象的配置。                  /config:* 还包括继承的配置。 /metadata        在显示配置时显示配置元数据。  /commit          设置用于保存配置更改的配置路径。                  可以指定具体的配置路径、“site”、                  “app”、“parent”或“url”以保存到该命令正在编辑的                  路径的适当部分,也可以设置为对应的配置级别                  的“apphost”、“webroot”或“machine”。 /debug           显示命令执行的调试信息。  -使用“!”以转义与常用参数同名的参数, 例如“/!debug:value”设置一个名为“debug”的配置属性。  C:\Windows\System32\inetsrv>appcmd list site SITE "demo" (id:2,bindings:http/*:80:www.demo.com,state:Started) SITE "HelloWCF" (id:3,bindings:http/*:80:www.hellowcf.com,state:Started) SITE "Default Web Site" (id:1,bindings:http/*:80:www.washost.com,net.tcp/808:*,n et.pipe/*,net.msmq/localhost,msmq.formatname/localhost,state:Started)  C:\Windows\System32\inetsrv>appcmd list app APP "demo/" (applicationPool:Demo) APP "HelloWCF/" (applicationPool:HelloWCF) APP "Default Web Site/" (applicationPool:Default Web Site) APP "Default Web Site/MSMQ" (applicationPool:Default Web Site) APP "Default Web Site/WASHostService" (applicationPool:Default Web Site)
  
  9、至此WAS托管服务端设置完毕,我们通过在浏览器中打开.svc文件测试元数据是否可见,输入:http://www.washost.com/WASHostService/WASHostService.svc
  (www.washost .com 在host文件中添加项:127.0.0.1 www.washost.com)可以看到如下信息:
  此元数据只所以可见,是因为我在配置文件中设置了【】和【】,请参考第三步的配置文件。
  10、创建Client项目,添加Service引用,如下图:

  完成后,在Program类中添加代码,主要代码如下:
    class Program     {         static void Main(string[] args)         {             using (Server.WASHostServiceClient client = new Server.WASHostServiceClient())             {                 Console.WriteLine("--------WAS NET.TCP BEGIN--------");                  Console.WriteLine(client.HelloWCF("Hello WCF"));                  Console.WriteLine("--------WAS NET.TCP  END--------");                  Console.ReadLine();             }             Console.ReadLine();         }     }
  
  此时,我们可以看到Client项目中,系统自动生成了一个app.config文件,主要代码如下:
                                                                                                                                                                                                                                                                                                                                 
  
  11、运行客户端,输入如下图:
  12、如果在调用服务的过程中出现Error:
An unhandled exception of type 'System.ServiceModel.EndpointNotFoundException' occurred in mscorlib.dll  Additional information: The message could not be dispatched because the service at the endpoint address 'net.tcp://cs/WASHostService/WASHostService.svc' is unavailable for the protocol of the address.
  
  则请通过重新安装ServiceModel解决:【C:\Windows\Microsoft.NET\Framework64\v4.0.30319>ServiceModelReg.exe -r】,个人理解是ServiceModel安装的版本的问题,如下:
C:\Users\Administrator>cd\  C:\>cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319  C:\Windows\Microsoft.NET\Framework64\v4.0.30319>ServiceModelReg -r Microsoft (R) WCF/WF registration tool version 4.0.0.0 Copyright (c) Microsoft Corporation.  All rights reserved.  Administration utility that manages the installation and uninstallation of WCF and WF components on a single machine.  [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [SC] ChangeServiceConfig2 成功 [Warning]The HTTP namespace reservation already exists.
  
  如有其它问题,则请通过【telnet ip 端口号】看服务端是否开启此端口。
  至此,托管(Hosting)-WAS托管(net.tcp)介绍完毕。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-649238-1-1.html 上篇帖子: 今上午遇到IIS假死,多种排查,已解决 下篇帖子: IIS FTP部分文件上传报错451处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表