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

时间:2013-04-05 07:31:16

标签: c# wcf

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

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

2 个答案:

答案 0 :(得分:2)

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

<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上展示元数据。

答案 1 :(得分:1)

因此,一般来说,您的互动取决于几个因素 - 您的管理环境,代码以及您的网络或应用设置。

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

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

以上链接大致描述了在代码或配置中指定地址的功能,以及它对主机环境的依赖