IIS 默认绑定 机械设置

来源:互联网 发布:中国国际大数据大会 编辑:程序博客网 时间:2024/05/02 00:28

默认的Endpoints

在第一章中创建ProductsSerice 服务时,你并未在web.config中设置任何端点和绑定信息。但是,当宿主环境(IIS)启动该服务时,IIS基于HTTP传输协议和虚拟文件的逻辑 地址(URL)自动创建了默认的端点。事实上,IIS调用了ServiceHost类中AddDefaultEndpoints方法生产了该端点的详细内 容。

AddDefaultEndpoints方法 根据服务包含契约的基本地址添加端点。举例来说,假设服务的基本地址是http://localhost/ProductsService,并且该服务的 服务契约是Products.IProductsService。 AddDefaultEndpoints将为该服务创建一个BasicHttpBinding绑定,其逻辑地址将为基本地址加svc的全名(http://localhost/ProductsService/*.svc)。如果服务实现类实现了两个服务契 约,AddDefaultEndpoints将添加两个端点,每个契约对应一个端点。类似地,如果一个服务设置了两个基本地址而且实现了两个服务契 约,AddDefaultEndpoints将添加4个端点。

那么AddDefaultEndpoints 是如何准确地选择哪个绑定?比如HTTP默认将使用BasicHttpBinding,AddDefaultEndpoints是如何做到这一点呢?它为什么不选择WSHttpBinding?原因在于,在machine.config文件中保存了对应的关

<system.ServiceModel>
...
<protocolMapping>
<clear/>
<addscheme="http" binding="basicHttpBinding" bindingConfiguration="" />
<addscheme="net.tcp" binding="netTcpBinding" bindingConfiguration="" />
<addscheme="net.pipe" binding="netNamedPipeBinding" bindingConfiguration="" />
<addscheme="net.msmq" binding="netMsmqBinding" bindingConfiguration="" />
</protocolMapping>
...
</system.ServiceModel>

 


原创粉丝点击