我添加了一个代理到Web服务到VS2008 / .NET 3.5的解决方案。 当构建客户端.NET引发此错误:
找不到,在ServiceModel客户端配置单元参考合同“IMySOAPWebService”默认终结点元素。 这可能是因为没有configuaration文件找到您的应用程序或者是因为匹配这份合同没有终结点元素可以在客户端元素中找到。
搜索这个错误告诉我,使用完整的命名空间中的合同。 这里是我的全命名空间的app.config:
<client>
<endpoint address="http://192.168.100.87:7001/soap/IMySOAPWebService"
binding="basicHttpBinding" bindingConfiguration="IMySOAPWebServicebinding"
contract="Fusion.DataExchange.Workflows.IMySOAPWebService" name="IMySOAPWebServicePort" />
</client>
我运行XP的本地(我提到这一点,因为许多谷歌命中提WIN2K3)在app.config复制到app.exe.config,这样也没有问题。
任何线索?
Answer 1:
“如果要调用的类库的服务,并要求从其他项目的类库可能会出现此错误。”
在这种情况下,您将需要包括WS配置设置成主项目的app.config如果一个winapp或web.config中如果一个Web应用程序。 这是去甚至PRISM和WPF / Silverlight的方式。
Answer 2:
我解决了这个(我想,其他人可能建议)通过创建绑定和端点地址情况下自己 - 因为我不想新设置添加到配置文件(这是被广泛使用的一些现有的库代码的替代品,和以前使用的旧的Web服务引用等),所以我希望能够放弃这一在无需到处添加新的配置设置。
var remoteAddress = new System.ServiceModel.EndpointAddress(_webServiceUrl);
using (var productService = new ProductClient(new System.ServiceModel.BasicHttpBinding(), remoteAddress))
{
//set timeout
productService.Endpoint.Binding.SendTimeout = new TimeSpan(0,0,0,_webServiceTimeout);
//call web service method
productResponse = productService.GetProducts();
}
编辑
如果您正在使用HTTPS,那么你需要使用BasicHttpsBinding
而非BasicHttpBinding
。
Answer 3:
有测试的几个选项,我终于通过使用解决了这个
合同= “IMySOAPWebService”
即没有在配置完整的命名空间。 出于某种原因,全名并没有妥善解决
Answer 4:
我有同样的问题。 事实证明,对于一个Web引用,您必须提供URL作为第一个参数的构造函数:
new WebService.WebServiceSoapClient("http://myservice.com/moo.aspx");
对于新样式的Web服务引用,你就必须提供一个指的是在配置端点条目的名称:
new WebService.WebServiceSoapClient("WebServiceEndpoint");
在相应的条目Web.config
或App.config
:
<client>
<endpoint address="http://myservice.com/moo.aspx"
binding="basicHttpBinding"
bindingConfiguration="WebService"
contract="WebService.WebServiceSoap"
name="WebServiceEndpoint" />
</client>
</system.serviceModel>
漂亮该死的努力,以消除该隧道视野“它曾在以前的程序” ......
Answer 5:
我有这样的情况,在那里我有
- WCF服务托管的地方
- 主要项目
- 型'类图书馆的消费项目,该项目具有服务引用WCF服务
- 主要项目需要从消费项目的方法
现在消费项目必须全部在相关配置设置<system.serviceModel>
我的app.config的标签,它仍然抛出了同样的错误以上。
我所做的是添加了相同的标签<system.serviceModel>
我的主要项目的app.config文件,最后我们好到哪里去。
真正的问题,就在我的情况是,有人读错的配置文件。 相反,消费者的app.config的,它是指主凸出的配置。 我花了两个小时才明白这一点。
Answer 6:
“如果要调用的类库的服务,并要求从其他项目的类库可能会出现此错误。”
“在这种情况下,您将需要包括WS配置设置成主项目的app.config如果一个winapp或web.config中如果一个Web应用程序,这是去甚至PRISM和WPF / Silverlight的方式。”
是的,但如果你不能改变主项目(果园CMS为例),你可以保持WCF服务的配置在您的项目。
你需要创建一个客户端生成方法的服务帮助:
public static class ServiceClientHelper
{
public static T GetClient<T>(string moduleName) where T : IClientChannel
{
var channelType = typeof(T);
var contractType = channelType.GetInterfaces().First(i => i.Namespace == channelType.Namespace);
var contractAttribute = contractType.GetCustomAttributes(typeof(ServiceContractAttribute), false).First() as ServiceContractAttribute;
if (contractAttribute == null)
throw new Exception("contractAttribute not configured");
//path to your lib app.config (mark as "Copy Always" in properties)
var configPath = HostingEnvironment.MapPath(String.Format("~/Modules/{0}/bin/{0}.dll.config", moduleName));
var configuration = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = configPath }, ConfigurationUserLevel.None);
var serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration);
if (serviceModelSectionGroup == null)
throw new Exception("serviceModelSectionGroup not configured");
var endpoint = serviceModelSectionGroup.Client.Endpoints.OfType<ChannelEndpointElement>().First(e => e.Contract == contractAttribute.ConfigurationName);
var channelFactory = new ConfigurationChannelFactory<T>(endpoint.Name, configuration, null);
var client = channelFactory.CreateChannel();
return client;
}
}
并使用它:
using (var client = ServiceClientHelper.GetClient<IDefaultNameServiceChannel>(yourLibName)) {
... get data from service ...
}
详细资料请见本文 。
Answer 7:
这一次让我抓狂。
我使用Silverlight 3棱镜(CAB)与WCF
当我把一个棱镜模块中的WCF服务,我得到了同样的错误:
找不到,在服务模型客户configuaration单元参考合同“IMyService”默认终结点元素。 这可能是因为没有configuaration文件被发现的应用程序或因为没有终点元件匹配这个合同可以在客户端元素中找到
事实证明,它期待在壳牌的ServiceReferences.ClientConfig文件.xap文件,而不是在模块的ServiceReferences.ClientConfig文件。 我说我的终点,并结合在我的Silverlight应用壳牌现有ServiceReferences.ClientConfig文件(它调用它自己的WCF服务)。
然后,我不得不重建壳牌应用为我的Web项目的ClientBin目录的新.xap文件。
现在这行代码最后的工作:
MyServiceClient myService = new MyServiceClient();
Answer 8:
一些答复这里偶然发现了正确的解决方案,当你面对引用从一个类文件中的服务的心态麻木令人费解的错误:复制服务配置信息到您的控制台或Windows应用程序的您的app.config的web.config。 这些问题的答案似乎都不告诉你什么,虽然复制。 让我们尝试和更正。
下面是我复制了我的类库的配置文件中,在我的控制台应用程序的配置文件,以解决这个疯狂的错误了我写的名为“TranslationServiceOutbound”服务。
基本上,您想要的system.serviceModel节内的一切:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ITranslationServiceOutbound" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://MyHostName/TranslationServiceOutbound/TranslationServiceOutbound.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITranslationServiceOutbound"
contract="TranslationService.ITranslationServiceOutbound" name="BasicHttpBinding_ITranslationServiceOutbound" />
</client>
Answer 9:
我正在那里WCF服务已被添加到其被添加到ASP.NET应用程序中的bin文件夹中引用的.dll文件类库ASP.NET应用程序中的这个错误。 要解决此错误,在类库引用所需的WCF服务中app.config文件的配置设置被复制到了ASP.NET网站/应用的web.config设置。
Answer 10:
我发现(以及复制到客户端UI的App.config中我是使用类库接口),我不得不前缀与服务引用的名称绑定的名称(我的是ServiceReference
在下面)。
例如:
<endpoint address="http://localhost:4000/ServiceName" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ISchedulerService"
contract="ServiceReference.ISchedulerService"
name="BasicHttpBinding_ISchedulerService" />
而不是默认的产生:
<endpoint address="http://localhost:4000/ServiceName" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ISchedulerService"
contract="ISchedulerService"
name="BasicHttpBinding_ISchedulerService" />
Answer 11:
我有同样的问题,但改变合同名称空间并没有为我工作。 所以,我想与.NET 2样式的Web引用,而不是一个.net 3.5服务引用。 这工作。
使用Visual Studio 2008中的Web引用,点击“添加服务引用”,然后单击“高级”对话框出现时。 在,你会发现一个选项,可以让你使用Web引用,而不是一个服务引用。
Answer 12:
单元测试非图书馆应用程序消耗的服务可能会导致此问题。
别人输入的信息解决这一现象的根本原因。 如果你试图写自动测试用例,你正在测试实际上将调用服务接口的单元,则需要将服务引用添加到测试项目。 这是使用库错误类型的应用程序的味道。 我并没有马上意识到这一点,但因为我的代码所消耗的接口不是在库中 。 然而,当测试实际运行它将被从测试组件,而不是被测试的组件运行。
添加服务参考单元测试项目解决了我的问题。
Answer 13:
我在单元测试这一局面。 我复制的app.config文件到单元测试项目。 因此,单元测试项目也包含端点信息。
Answer 14:
我曾经面临过这样的问题。 那是因为我还在开发使用WCF服务的接口。 我配置测试应用和持续发展。 然后,在发展中,我改变了一些服务的命名空间。 所以,我仔细检查了“system.serviceModel - >客户端 - >终点 - >合同”在web.config中匹配WCF类。 然后,问题就解决了。
Answer 15:
在你的配置命名空间应反映名称空间路径的客户端的默认命名空间后剩下的(如在项目属性配置)。 根据您发布的答案,我的猜测是,您的客户端配置为在“Fusion.DataExchange.Workflows”命名空间。 如果移动客户端代码到另一个命名空间,你会需要更新配置,以匹配剩余的命名空间路径。
Answer 16:
只是为别人同样的问题; 我写了我的方法,一个单元测试,试图连接到我的服务。 它每一次失败,此相同的例外 - 我不知道为什么。 当我从一个winform运行它,它工作正常。
Answer 17:
我已经使用了WCF服务类库同一Problem.I'm并要求从Windows应用程序的类库project.but我忘记更改<system.serviceModel>
在Windows应用程序项目的配置文件相同的<system.serviceModel>
类库的App.config文件中。
解决方案:外项目相同的类库的WCF配置的更改配置。
Answer 18:
如果你在你的类库引用Web服务,那么你必须的app.config复制到您的Windows应用程序或控制台应用程序
解决方案:外项目相同的类库的WCF配置的更改配置。
工作对我来说
Answer 19:
嗨,我遇到了同样的问题,但最好的解决办法就是让.NET来配置你的客户端配置。 我发现这是当我的HTTP查询字符串添加服务引用:/namespace/service.svc WSDL = wsdl0它不会在客户端创建一个配置端点。 但是,当我删除了WSDL的wsdl0并且只使用URL http:/namespace/service.svc,它在创建客户端配置文件中的端点配置。 短期remoe了 “?WSDL = WSDL0”。
Answer 20:
不要把服务客户报关行作为类字段,而不是这个,在在。所以,问题将使用各种方法创建实例。 如果您创建服务客户实例作为类字段,然后设计时错误!
Answer 21:
在情况下,如果你正在使用PRISM框架使用WPF应用程序,然后配置应该在你启动了该项目存在(在你的引导程序所在的项目即。)
Answer 22:
如果要调用的类库的服务,并要求从其他项目的类库可能会出现此错误。
Answer 23:
似乎有多种方法来创建/解决这个问题。 对于我来说,我使用的CRM产品是用本机代码,并能打电话给我的.NET的DLL,但我碰到的配置信息需要是在/主应用程序上面。 对我来说,CRM的应用是不是.NET,所以我最后不得不把它放在我的machine.config文件(不是我想要的)。 另外,由于我公司使用的Websense我的日子不好过,甚至添加服务引用由于407代理服务器身份验证问题,即以需要修改的machine.cong。
代理服务器的解决方案:
要获得WCF服务参考工作,我不得不把信息从我的DLL的的app.config复制到主应用程序配置(但对我来说,这是machine.config中)。 而我也不得不端点信息复制到同一个文件。 一旦我做到了自己也开始为我工作。
Answer 24:
好。 我的情况有点不同势,但最后我发现修复它:我有一个Console.EXE - > DLL - >调用WS1 - > DLL - >调用WS2
建议我在Console.EXE.config有WS1的服务模式两者的配置,WS2。 - didnt解决问题。
但它仍然没有工作,直到我已经添加WS2的Web引用到WS1也并不仅是实际创建并调用WS2的代理的DLL。
Answer 25:
我遇到过同样的问题
我使用的桌面应用程序,并使用全球天气Web服务
我删除服务引用,并添加Web引用和问题解决了谢谢
Answer 26:
解决方法对我来说是从端点名称属性在web.config中的客户端允许这个代理使用删除端点名
ChannelFactory<TService> _channelFactory = new ChannelFactory<TService>("");
只用了一整天的工作了。 另外,合同名称是错误的,一旦此修复程序已经到位,虽然它已经错了,当最初的错误出现。 双然后三重检查合同名称字符串的人! ATTRIB:伊恩
Answer 27:
请允许我补充一两件事寻找。 ( 汤姆·黑格的回答已经暗示,但我想明确)
我web.config
文件中有如下规定:
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
我已经使用basicHttpsBinding为一个参考,但后来我向其中加入所需的basicHttpBinding的(没有或多个)新的参考。 我所要做的就是添加到我的protocolMapping
如下:
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
作为LR正确地指出,这需要在适当的地方加以界定。 对我来说,这意味着一个在我的单元测试项目的app.config以及一个在主要服务项目的web.config。
Answer 28:
当我引用在配置文件中的元素合同没有在全球范围内运营商我有这个错误。
即
<endpoint contract="global::MyNamepsace.IMyContract" .../>
作品,但
<endpoint contract="MyNamepsace.IMyContract" .../>
给出错误的“引用合同找不到默认的终结点元素”。
含组装MyNamepsace.IMyContract是在不同的装配到主应用程序,所以这可能解释了需要使用全球范围内的分辨率。
Answer 29:
我得到了同样的错误,我尝试一些很多的事情,但没有工作,比我发现我的“合同”是不是同为整个项目,我改变将是相同的内部解决方案,比它的工作的所有项目合同。 这是一个项目
<client>
<endpoint address="https://xxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference.IIntegrationService" name="basic" />
</client>
项目B:
<client>
<endpoint address="xxxxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference1.IIntegrationService" name="basic" />
</client>
最后,我改变了既:
<client>
<endpoint address="https://xxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="MyServiceReferrence.IIntegrationService" name="basic" />
</client>
Answer 30:
当你添加一个服务引用
当心你输入的命名空间:
你应该把它添加到你的接口的名称:
<client>
<endpoint address="http://192.168.100.87:7001/soap/IMySOAPWebService"
binding="basicHttpBinding"
contract="MyNamespace.IMySOAPWebService" />
</client>
文章来源: Could not find default endpoint element