WCF之Windows宿主(可安装成服务自动并启动)
图1:图2:
图3:图4:
在Service1的设计界面中右击,选择“属性”,把其中的(Name)和ServiceName都改为BookServiceHost
编写代码:
图5:
Http(高级Web服务互操作性)
图20: 图21:
图22:
到目前为止我们配置好了两个http通道下的两个终结点,但这两个终结点的地址我们都使用的是相对地址,它们是相对于当前ServiceHost地址,所以我们还需要配置当前ServiceHost的地址.
图23:
这样我们两个终结点算是配置完成了。
“自运行WCF服务”与“在IIS布运行WCF服务”不一样的是,“自运行WCF服务"除了可以使用Http方式发布WCF服务,可以使用TCP、命名管道和微软消息队列进行信息传输。
下面我们再配置两个终结点,一个是使用TCP通信模式,另一个使用命名管道通信模式。
TCP:
图24:图25:
命名管道:
图26:图27:
到此为至,我们已经为该WCF服务建立了四个数据传输的终结点
下面我们为该ServiceHost程序配置“元数据终结点”,以向客户端发送服务元数据信息
图28:图29:
图30:
图31:图32:
图34:图33:
图35:图36:
图37:图38:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="NewBehavior"> <serviceMetadata httpGetEnabled="true" /> <dataContractSerializer maxItemsInObjectGraph="2147483647"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="NewBehavior" name="WCFService.BookService"> <clear /> <endpoint address="basic" binding="basicHttpBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> <identity> <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" /> </identity> </endpoint> <endpoint address="ws" binding="ws2007HttpBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> <identity> <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" /> </identity> </endpoint> <endpoint address="net.tcp://localhost:8082/BookService" binding="netTcpBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> <identity> <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" /> </identity> </endpoint> <endpoint address="net.pipe://localhost/BookService" binding="netNamedPipeBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> <identity> <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" /> </identity> </endpoint> <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8081/service" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>
然后把下面代码删掉:
<identity> <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" /> </identity>
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="NewBehavior"> <serviceMetadata httpGetEnabled="true" /> <dataContractSerializer maxItemsInObjectGraph="2147483647"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration="NewBehavior" name="WCFService.BookService"> <clear /> <endpoint address="basic" binding="basicHttpBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> </endpoint> <endpoint address="ws" binding="ws2007HttpBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> </endpoint> <endpoint address="net.tcp://localhost:8082/BookService" binding="netTcpBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> </endpoint> <endpoint address="net.pipe://localhost/BookService" binding="netNamedPipeBinding" contract="WCFService.IBookService" listenUriMode="Explicit"> </endpoint> <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8081/service" /> </baseAddresses> </host> </service> </services> </system.serviceModel> </configuration>
以上所写不仅适用与Windows宿主,同时适用IIS、控制台,因此后面关于IIS以及控制台宿主的发布不再重复以上配置
在Service1设计界面中右击,选择“添加安装程序”
图40:图41:
图42:图43(此图网络引用):
进入vs2012 开发命令提示,进入项目对应的盘符并进入exe所在文件夹,执行命令 :installutil WindowsServiceHost.exe
图44:
图45:
图46:
图
在VS2008命令窗口中输入:wcftestclient http://localhost:8081/Service 出现下面的界面
47::
原文:https://www.cnblogs.com/Leo_wl/p/11496272.html