我有两个项目。
一个是引用Web服务的WCF代理项目。我希望这个项目包含我与Web服务交互的所有逻辑。
我还有一个测试项目,我想称之为代理项目。
问题是我在WCF代理项目中拥有所有配置设置,如端点等。当我运行它时,我收到此错误,说它无法找到端点。
无法找到默认端点 引用合同的元素 'AlumniWebService.IAlumniWebService' 在ServiceModel客户端中 配置部分。这可能是 因为没有配置文件 找到您的申请,或因为 没有匹配此的端点元素 合同可以在客户端找到 元件。
我必须将所有WCF Web服务配置放在测试项目中,以便我调用Web服务。
这个Web服务可能不仅仅是由这个测试项目消耗,可能还有几个Web应用程序,所以我希望我的配置在代理项目中,以便不必有多个版本。
如何获取要引用的代理项目的Web配置?
答案 0 :(得分:3)
默认情况下,.NET配置系统不会查看类库配置文件。它们是作为样本创建的,作为帮助者 - 但它们并未被使用。您需要将配置放入将使用类库的主应用程序中,以便“激活”并使用它。
你可以通过一些手工工作做的一件事是:
<system.serviceModel>
的每个子元素放入单独的文件引用主配置中的内容:
<system.serviceModel>
<behaviors configSource="behaviors.config" />
<bindings configSource="bindings.config" />
<client configSource="client.config" />
</system.serviceModel>
通过这种方式,您可以拥有一组“外部化”配置文件,并从任意数量的其他项目中引用它们。
Visual Studio没有正确地了解这一点,并将突出显示为错误 - 但相信我 - 它确实有效! (这只是一个VS缺陷,它不理解任何配置部分的configSource=
属性)
那些外部配置文件将只包含该特定部分的位,因此您的bindings.config
将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<bindings>
<basicHttpBinding>
<binding name="YourBindingName"
receiveTimeout="00:02:00" sendTimeout="00:02:00"
maxBufferSize="512000" maxBufferPoolSize="524288"
maxReceivedMessageSize="512000"
useDefaultWebProxy="false">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
答案 1 :(得分:0)
可以将自定义web.config(支持具有应用程序设置的web.config)导入主web.config,但我不认为您可以将服务端点配置从支持web.config导入到主web.config。
如果您只关心在测试应用程序中配置服务,那么只需将服务引用添加到测试应用程序中,Visual Studio将根据主机应用程序的配置自动在测试应用程序中配置您的设置。