一尘不染

IIS WCF服务托管与Windows服务

c#

我们开发了WCF服务,并正在寻求对其进行部署。我们的客户将使用,basicHttpBinding但我们的内部团队将使用namedPipesBinding

我们想知道将其托管在IIS 7或Windows
Service中是否更好。我们进行了一些测试,发现在IIS中添加绑定时,它不会更新服务的配置文件。这意味着我们需要在两个不同的地方维护配置。这不合逻辑,对吧?

我们还在StackOverflow上读到,当在IIS中托管WCF服务时,基地址将被忽略(请参阅有关的WCF服务配置文件问题


阅读 398

收藏
2020-05-19

共1个答案

一尘不染

要回答这些问题:

我们进行了一些测试,发现在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激活)”。

2020-05-19