哪些人是建网站的,网站备案后怎么做,网站搜索功能怎么做,网站更新内容第五篇#xff1a;用IIS做Host之前几篇的Demo中#xff0c;我们一直在用控制台程序做Server#xff0c;今天换IIS来做Host#xff0c;在Web Application中添加WCF的服务。其实在Web Application中添加WCF服务是最简单的#xff0c;“新建项”中有专用的“WCF服务”#x… 第五篇用IIS做Host之前几篇的Demo中我们一直在用控制台程序做Server今天换IIS来做Host在Web Application中添加WCF的服务。其实在Web Application中添加WCF服务是最简单的“新建项”中有专用的“WCF服务”扩展名为svc。比如我们创建DataService.svcVisual Studio会自己创建好DataService.svc、DataService.svc.cs、IDataService.cs共三个文件并且自动在Web.config中增加默认设置。从功能上看IDataService.cs是服务契约DataService.svc.cs是契约的实现类DataService.svc没什么实际用处里面也只有一行代码% ServiceHost LanguageC# Debugtrue ServiceWebServer.DataService CodeBehindDataService.svc.cs % Web.config中的部分与之前略有不同我们来分析一下system.serviceModel !-- 这个节点是新加的后面会讨论一下 --behaviorsserviceBehaviorsbehaviornameWebServer.DataServiceBehaviorserviceMetadatahttpGetEnabledtrue/serviceDebugincludeExceptionDetailInFaultsfalse//behavior/serviceBehaviors/behaviorsservices !-- 新增了behaviorConfiguration属性值就是上面定义过的behavior的name表示此service使用指定的behavior配置 --servicebehaviorConfigurationWebServer.DataServiceBehaviornameWebServer.DataServiceendpointaddressbindingwsHttpBindingcontractWebServer.IDataService/!-- 这个endpoint是新加的后面会讨论一下 --endpointaddressmexbindingmexHttpBindingcontractIMetadataExchange//service/services/system.serviceModel与之前的App.config相比有以下几点不同1、host节点没有了host节点没有了对应的baseAddress也没有了这是理所当然的事因为不需要访问DataService.svc文件时的url本身就是一个地址了。2、新增加了一个behaviors节点此节点用于控制行为在服务端只有serviceBehaviors子节点下面的httpGetEnabledtrue表示允许用http的get方式获取服务的元数据信息。还记得第一篇中的例子吗我们用浏览器访问时得到一个“当前已禁用此服务的元数据发布”的提示就是因为不允许以http的get方式获取服务元数据造成的这个属性就是开启此功能。顺便提一下用svcutil.exe生成客户端代理的话对http类型的binding必须要开放get方式访问元数据。3、新增加了一个endpoint这个endpoint比较特殊它的binding是mexHttpBinding服务契约是IMetadataExchange。这个endpoint是用于元数据发布的它的功能实际上和刚才的httpGetEnabledtrue有些重复。我们可以这样理解当开启了httpGetEnabled时用 http://...../DataService.svc?wsdl 就可以访问到元数据如果没开启但有这个endpoint用 http://...../DataService.svc/mex 也可以访问到元数据如果都没有那对不起不允许你获取元数据。当然啦如果你已经有契约了不会影响调用的多加一句对tcp类型的binding有一个对应的mexTcpBinding用于获取元数据没有定义它svcutil.exe就不能生成tcp类binding的代理类。 在IIS中发布WCF服务一般很少用http之外的binding但不代表不能用IIS是支持的我们在IIS管理器中查看一下站点绑定默认情况下能看到这样的设置像netTcpBinding就会利用IIS的net.tcp类型绑定端口是808。OK先到这吧下一篇聊聊同步异步双向通讯方面的问题。本文出自 “兔子窝” 博客请务必保留此出处http://boytnt.blog.51cto.com/966121/801384 转载于:https://blog.51cto.com/rmlifejun/1264402