我们开发了WCF服务,并正在寻求对其进行部署。我们的客户将使用,basicHttpBinding但我们的内部团队将使用namedPipesBinding。
basicHttpBinding
namedPipesBinding
我们想知道将其托管在IIS 7或Windows Service中是否更好。我们进行了一些测试,发现在IIS中添加绑定时,它不会更新服务的配置文件。这意味着我们需要在两个不同的地方维护配置。这不合逻辑,对吧?
我们还在StackOverflow上读到,当在IIS中托管WCF服务时,基地址将被忽略(请参阅有关的WCF服务配置文件问题)
要回答这些问题:
我们进行了一些测试,发现在IIS中添加绑定时,它不会更新服务的配置文件。这意味着我们需要在两个不同的地方维护配置。这不是逻辑,对吧?
使用IIS承载服务时,必须配置App.config文件或web.config文件以允许IIS公开某些绑定,因此在配置文件中,应将允许的所有绑定放入wcf服务。Http,net.tcp等…
在绑定中,您将不会指定地址,因为您将直接在IIS中指定这些地址。
在IIS中,必须允许网站的高级设置中可用的绑定。之后,您将为网站“ Web服务”设置新的绑定,并添加要监听的每个绑定,并指定地址。
您将直接在IIS中指定地址。
有一个例子。
您的配置文件:
<services> <service name="ServiceName"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="httpMode" contract="IContract" /> <endpoint address="" binding="netTcpBinding" contract="IContract" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services>
在IIS高级设置中,您将
启用协议中的http,net.tcp
之后,您将进入IIS。将您的绑定用于http normaly并添加一个新的绑定net.tcp,在绑定配置中将端口和虚拟目录
8001:*
此设置允许所有连接到任何虚拟目录的8001端口。
您还必须在服务器上安装功能“ WCF激活,(Http激活和非Http激活)”。