.net 4.0
我有两个使用自己的web.config
文件的Web项目,并使用相同的端点来调用相同的WCF Web服务。
两者都使用具有app.config
文件的公共项目(dll)。我想将端点信息移动到该配置文件中 - 这可能吗?我想要端点信息
<client>
<endpoint/>
<client/>
来自普通地方的两个网络应用程序共享?
Web.config
此处省略了文件绑定信息
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings/>
<client configSource="client.config">
<system.serviceModel/>
</configuration>
共同项目中的 client.config
文件
<client>
<endpoint
name="endpoint1"
address="http://localhost/ServiceModelSamples/service.svc"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IHello"
behaviorConfiguration="IHello_Behavior"
contract="IHello"/ >
道歉我改变了两件事 1. client.config有一个元素拿出来了。 2.在项目的构建属性中添加了COPY“$(TargetDir)*。config”“$(ProjectDir)”
在web.config(configSource)和&amp; client.config VStudio大喊设计时间但运行正常吗?
答案 0 :(得分:1)
您可以通过“外包”来共享部分WCF配置:
<system.serviceModel>
<client configSource="client.config" />
.....
</system.serviceModel>
然后在client.config
:
<?xml version="1.0" encoding="utf-8"?>
<client>
<endpoint name="ABC"
address="http://......."
binding="......."
contract="......" />
</client>
您不能将内容放入公共程序集的app.config
中,因为.NET框架不会使用/查看这些配置文件。您需要将您的信息放入应用或网站(web.config
)的主配置文件中 - 但您可以将某些部分“外部化”为独立的部分,外部文件并像那样共享它们。
答案 1 :(得分:0)
我曾经在这种情况下工作,我认为这是不可行的。
答案 2 :(得分:0)
另一种方法是使用自定义ChannelFactory类,然后通过注入或默认规则指定client.config路径。
以下是如何编写接受自定义配置路径的自定义ChannelFactory: http://weblogs.asp.net/cibrax/archive/2007/10/19/loading-the-wcf-configuration-from-different-files-on-the-client-side.aspx
我使用this.GetType.Assembly.GetExecutingAssembly().ManifestModule.Name + ".config"
动态获取与我的共享库名称相匹配的默认配置文件。
您可以让两个Web应用程序使用配置路径实例化自定义ChannelFactory,或者您可以在公共库中添加一个与Web服务交互的抽象层,然后您的Web应用程序使用新的抽象对象而不是直接依赖Web服务。当您需要在不干扰Web应用程序的情况下适应Web服务的更新时,这非常有用。
此SO中的更多详细信息答案:Using ConfigurationManager to load config from an arbitrary location