0

我目前有多个项目解决方案中的一个Web服务。由于我不想在所有项目中添加服务引用以便能够使用它,因此我暂时创建了一个名为“ServiceHelper”的静态类的项目。这个项目将是唯一一个带有服务引用的帮助者将完成所有请求。 Web服务被公开(而不是内部)。所有项目都需要Web服务引用吗?

这里我的问题是,当我从另一个没有服务引用的项目在我的助手中初始化我的SoapClient时,它会引发异常。但是,当我将服务引用添加到其他项目时,它可以工作。这是否正常?

翻译出来的异常(因为用法语说)是: 无法找到元素端点默认值是指ServiceModel客户端配置中的合同'ServiceReference.WebServiceSoap'部分。这可能是由于您的应用程序的配置文件未找到,或者在客户端元素中找到了与此合同匹配的端点元素

我的配置文件中是否缺少某些内容?因为我没有改变任何提到的两个项目。

为例我如何初始化我在SoapClient的我的帮助:

private static ServiceReference.WebServiceSoapClient _webService = new ServiceReference.WebServiceSoapClient(); 
+2

这显然是第二个项目的app.config中缺失部分的问题。比较配置,我相信你会注意到缺少的东西。请记住,为了避免配置问题,这可能会使你的ServiceHelper独立于app.config。如果你的“客户”和你的“服务”在你的项目中是本地的,你可以从代码构建所有必要的配置(绑定等)。 – 2014-10-27 18:09:21

+0

我不知道你必须在客户端项目的配置文件中添加必要的部分,所以它会去帮助程序。我已经将我的帮助程序项目的配置文件中引用Web服务的内容复制到客户端项目中,而无需添加服务引用,现在它可以工作。我一定会试着把它放在我的代码中,而不必再这样做了。谢谢! – TheBlainer 2014-10-27 19:19:37

回答

0

与@ zverev.eugene继,你不需要在每一个项目中的引用,但在web.config或app.config中在项目中是从中检索连接和配置信息的地方。这是因为调用类库的应用程序是提供所有配置信息的应用程序(例如,如果在类库中有数据访问层,则连接字符串将来自调用DAL的应用程序的.config,而不是类库本身)。