C# WCF基址被App.config覆盖

C# WCF基址被App.config覆盖,c#,.net,wcf,C#,.net,Wcf,今天我开始钻研WCF。我在一个学校开始学习教程 我浏览了本教程,直到您托管服务主机为止。教程部分告诉我启动服务,然后导航到代码中指定的uri。当我这么做的时候,我的联系被拒绝了。经过一段时间的胡闹,我发现在app.config中,基址被指定为完全其他的东西。导航到该URI,后跟端点名称,将我带到我想去的地方。我不知道那个地址是怎么产生的,也不太在乎。我更感兴趣的是,当在服务上设置基本URI似乎没有任何效果,并且实际使用的基本URI来自app.config时,它的作用是什么。类型的构造函数需要它。

今天我开始钻研WCF。我在一个学校开始学习教程


我浏览了本教程,直到您托管服务主机为止。教程部分告诉我启动服务,然后导航到代码中指定的uri。当我这么做的时候,我的联系被拒绝了。经过一段时间的胡闹,我发现在app.config中,基址被指定为完全其他的东西。导航到该URI,后跟端点名称,将我带到我想去的地方。我不知道那个地址是怎么产生的,也不太在乎。我更感兴趣的是,当在服务上设置基本URI似乎没有任何效果,并且实际使用的基本URI来自app.config时,它的作用是什么。类型的构造函数需要它。。。所以你会认为这很重要。有人能给我解释一下吗

如果仔细查看两个需要Uri的
ServiceHost
构造函数,Uri参数的前缀是
params

在C#中,这意味着您可以传递任意数量的URI,包括零

如果要使用app.config的

如果没有配置,则传递类型或对象以及一些URI。
然后WCF创建一个服务,该服务在所有URI上公开该服务的所有接口

例如,如果您的服务中有两个接口,并且您调用:

var host = new ServiceHost(typeof(HelloService), 
                       "net.tcp://localhost:7000/service1", 
                       "net.pipe://localhost:8000/service1", 
                       "http://localhost:9000/service1");
您将获得2x3个暴露端点

大多数情况下,
ServiceHost
都是在不提供地址的情况下构建的

配置是用XML创建的


关于

我想知道这是否是在没有app.config的情况下发生的。看起来这就是你的意思。实际上,你可以从纯.net代码中进行所有配置,而不需要任何Xml。您还可以混合使用一些基本配置和一些动态配置的方法