C# app.config或web.config中的配置与WCF中的代码之间的关系

C# app.config或web.config中的配置与WCF中的代码之间的关系,c#,wcf,C#,Wcf,WCF中的服务主机如何与web.config或app.config中的配置交互。创建服务主机时,我只在服务主机构造函数和服务类中指定url 但是在app.config或web.config中,我有另一个端点列表,每个端点都有自己的特定url。那么wcf如何处理这种情况呢?它从app.config或web.config获取哪个端点 端点的地址相对于服务主机的基址。例如,如果您有以下端点: <service name="MyService"> <endpoint addre

WCF中的服务主机如何与web.config或app.config中的配置交互。创建服务主机时,我只在服务主机构造函数和服务类中指定url


但是在app.config或web.config中,我有另一个端点列表,每个端点都有自己的特定url。那么wcf如何处理这种情况呢?它从app.config或web.config获取哪个端点

端点的地址相对于服务主机的基址。例如,如果您有以下端点:

<service name="MyService">
    <endpoint address="" binding="ws2007HttpBinding" contract="IMyService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>


以及
http://localhost:7777
,则您将在
http://localhost:7777
,以及
http://localhost:7777/mex

因此,通常情况下,您的交互取决于几个因素—您的冲洗环境、您的代码以及您的web或应用程序设置

根据MSDN():有两种方法可以在WCF中为服务指定端点地址。您可以为与服务关联的每个端点指定绝对地址,也可以为服务的ServiceHost提供基址,然后为与此服务关联的每个端点指定相对于此基址定义的地址。您可以使用这些过程中的每一个来指定配置或代码中服务的端点地址。如果未指定相对地址,则服务将使用基址

此外,您还必须注意您的托管环境。例如,IIS本身为端点生成基本地址(即使它是在配置中指定的),同时在自主机中从配置中读取它


上面的链接详细介绍了在代码或配置中指定地址的功能,以及它对主机环境的依赖性

我已经编辑了您的标题。请看“”,其中的共识是“不,他们不应该”。我需要第二个端点作为我的示例,所以我选择了一个无害的端点。如果希望客户端能够使用
svcutil.exe
,而无需对WSDL执行HTTP GET,则只需公开MEX端点。我自己并不为MEX操心,我只是在我的服务行为中加入了