我们为客户创建了一个WCF服务应用程序。由于该服务用于传输大量数据(可能需要很长时间),因此对Web.config
文件进行了一些更改(例如增加的超时限制或消息大小限制)以适应这种情况。
一切正常并且没有技术问题......除了客户端并不完全满意,每当他们创建一个消耗WCF服务的新应用程序时,他们需要手动将所有更改添加到客户端{{ 1}}文件。
他们希望自动从服务中读取更改。
我从来没有WCF有这样的功能,所以我不认为这是可能的。但我非常希望确认......或否认,如果这确实可行。
答案 0 :(得分:1)
除非您创建自定义方法来公开这些参数,或者至少是它们的值,否则消费者看不到它们。
配置文件应该是私有的,这就是您无法在标准安装中浏览它们的原因。
听起来我的客户需要接受,或许在添加新服务时,需要做一些工作。从理论上讲,它们可以从现有应用程序中剪切和粘贴servicemodel配置或部分,以节省“一些”时间。
答案 1 :(得分:1)
IIRC ..在早期版本的stocktrader应用程序中。
How to implement Configuration Service 5.0 of the StockTrader 5.0 sample application?
在上面的SOF链接中提到
有一种方法可以从服务中获取配置。 然而,股票交易者应用程序看起来与之前做的大不相同。 所以我不知道哪个版本变得与众不同。 Greg Leake(Leak)是我在TechEd一年遇到的那个家伙的名字......在谈论这个,IIRC。
实施并不是特别的。
编辑一些客户端配置文件的成本........与配置服务相比.....你将不得不拨打电话。
但听起来你的客户需要一些奶酪和他们的抱怨。
这是一段较旧的视频......可能会让您走上正确的道路。
此PDF
会给你提示。
启动并运行“配置服务”需要做很多工作。
我们最终......没有做到.......并在msbuild任务中使用xml-manipulation .......来调整wcf客户端xml部分。
编辑:
替代想法。将WCF放在单独的文件中并分发它们。 它将使“编辑地点”更加明显.....或者全部替换所有(4)文件。
app.config或web.config
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors configSource="WCFBehaviors.config">
</behaviors>
<bindings configSource="WCFBindings.config">
</bindings>
<client configSource="WCFClient.config">
</client>
<services configSource="WCFServices.config">
</services>
</system.serviceModel>
然后制作4个文件。 示例WCFServices.config
<services>
<service name="MyApp.MyService">
<endpoint
address = "http://localhost:8001/MyService"
binding = "wsHttpBinding" bindingConfiguration="WSHttpBindingName1"
contract = "MyApp.MyIService" >
</endpoint>
</service>
</services>
注意,这些不会像web.config和app.config那样包含auto-voodoo。 你必须确保它们最终出现在你的构建输出中。