2015-11-04 33 views
1

今天我开始钻研WCF。我参加了教程https://msdn.microsoft.com/en-us/library/ms734712(v=vs.110).aspxWCF基地址被App.config覆盖

我一直走过本教程,直到您托管服务主机。教程段here告诉我启动该服务,然后导航到代码中指定的uri。当我这样做时,我的联系被拒绝了。经过一段时间,我发现基本地址在app.config中被指定为完全别的东西。导航到该URI后跟端点名称将我带到了我想去的地方。我不知道这个地址是如何产生的,并不是真的在乎那么多。我更感兴趣的是在服务上设置基本URI的目的是什么,当它似乎没有任何作用时,使用的实际基本URI来自app.config。它是ServiceHost类型的构造函数所要求的...所以你会认为它很重要。谁可以给我解释一下这个?

回答

1

如果仔细查看期望使用Uris的ServiceHost的两个构造函数,则Uri参数的前缀为params

在C#中,这意味着您可以传递尽可能多的Uris,包括零。

如果您想使用app.config,则不传递Uri很有趣。

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

例如,如果你已经在你的服务有两个接口,您拨打:

var host = new ServiceHost(typeof(HelloService), 
         "net.tcp://localhost:7000/service1", 
         "net.pipe://localhost:8000/service1", 
         "http://localhost:9000/service1"); 

你会得到的2x3暴露端点

大部分时间ServiceHost都无需提供地址建。

配置是用XML编写的。

Regards

+0

我想知道如果这是在没有app.config存在的情况下。看起来像那是你的意思。 –

+0

其实你可以从纯净的.net代码中完全没有Xml的所有配置。您还可以混合使用这些方法来进行一些基本配置和一些动态配置 –