WCF错误 – 无法find引用合同“UserService.UserService”的默认端点元素

任何想法如何解决这一问题?

UserService.UserServiceClient userServiceClient = new UserServiceClient(); userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted); userServiceClient.GetUsersAsync(searchString); 

 <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_UserService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <security mode="None" /> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:52185/UserService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_UserService" contract="UserService.UserService" name="BasicHttpBinding_UserService" /> </client> <behaviors> <serviceBehaviors> <behavior name="Shell.Silverlight.Web.Service3Behavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> <services> <service behaviorConfiguration="Shell.Silverlight.Web.Service3Behavior" name="Shell.Silverlight.Web.Service3"> <endpoint address="" binding="basicHttpBinding" contract="Shell.Silverlight.Web.Service3" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel> 

在ServiceModel客户端configuration部分找不到引用协议“UserService.UserService”的默认端点元素。 这可能是因为没有为您的应用程序findconfiguration文件,或者是因为在客户端元素中找不到匹配此合同的端点元素。

解决!

我没有提到这是一个Silverlight应用程序。 我有一个拥有自己的“ServiceReferences.ClientConfig”文件的DLL中的wcf引用。 我将DLL的ServiceReferences.ClientConfig的内容移动到主Silverlight项目,它的工作。

我遇到了同样的问题。 我的应用程序也是一个Silverlight应用程序,服务是从一个自定义UserControl的类库中调用的。

解决scheme很简单。 将端点定义从类库的configuration文件(例如ServiceReferences.ClientConfig)复制到silverlight应用程序的configuration文件。 我知道你会期望它不用这样做,但显然雷蒙德有一天有一个假期。

您也可以在类库中以编程方式设置这些值,这将避免configuration文件在库中不必要的移动。 简单的BasciHttpBinding的示例代码是 –

 BasicHttpBinding basicHttpbinding = new BasicHttpBinding(BasicHttpSecurityMode.None); basicHttpbinding.Name = "BasicHttpBinding_YourName"; basicHttpbinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; basicHttpbinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; EndpointAddress endpointAddress = new EndpointAddress("http://<Your machine>/Service1/Service1.svc"); Service1Client proxyClient = new Service1Client(basicHttpbinding,endpointAddress); 

以防万一使用WPF(而不是WCF或Silverlight)遇到同样的问题:

连接到Web服务时,出现此错误。 当我的代码在“主”WPF应用程序解决scheme,没有问题,它的工作完美。 但是当我把代码移动到更明智的DAL层解决scheme时,就会抛出exception。

找不到在ServiceModel客户端configuration部分中引用合同“MyWebService.MyServiceSoap”的默认端点元素。 这可能是因为没有为您的应用程序findconfiguration文件,或者是因为在客户端元素中找不到匹配此合同的端点元素。

正如此线程中的“Sprite”所述,您需要手动复制标记。

对于WPF应用程序,这意味着将标记从我的DAL解决scheme中的app.config复制到主WPF应用程序解决scheme中的app.config

我碰到了同样的问题,无论什么原因,当我第一次添加服务时,Visual Studio没有更新Webconfiguration。 我发现更新服务引用也解决了这个问题。

脚步:

  1. 导航到服务参考文件夹
  2. 展开它
  3. 右键单击并select更新服务参考
  4. 观察networkingconfiguration更新

将WCF服务的web.config改为“endpoint address =”“binding =”basicHttpBinding“…”(先前的binding =“wsHttpBinding”)构build应用程序之后,在“ServiceReferences.ClientConfig”“”configuration> 。 那么它会正常工作。

将由svcutil.exe生成的output.config重命名为app.config。 它为我工作。

你有一个“UserService”类实现的接口吗?

您的端点应指定合同属性的接口:

 contract="UserService.IUserService" 

不知道这是否是一个问题。 端点和绑定都具有相同的名称

不知道这是否真的是一个问题,但我看到你的绑定configuration()具有相同的名称。

我通常试图打电话给我的端点,像“UserServiceBasicHttp”或类似的东西(“绑定”真的没有什么事可做),我尝试用“….configuration”来调用我的绑定configuration,例如“UserServiceDefaultBinding”,以避免任何潜在的名称冲突。

渣子

必须在调用App.config文件中添加该服务才能使其正常工作。 确保你,但毕竟。 这似乎为我工作。

当您通过其他应用程序使用您的服务时,会发生此问题。如果应用程序具有configuration文件,只需将您的服务configuration信息添加到此文件。 在我的情况下,没有任何configuration文件,所以我使用这种技术,它工作得很好。只需在应用程序中存储url地址,阅读它,并使用BasicHttpBinding()方法发送到服务应用程序作为参数。这是简单的演示,我怎么做它:

 Configuration config = new Configuration(dataRowSet[0]["ServiceUrl"].ToString()); var remoteAddress = new System.ServiceModel.EndpointAddress(config.Url); SimpleService.PayPointSoapClient client = new SimpleService.PayPointSoapClient(new System.ServiceModel.BasicHttpBinding(), remoteAddress); SimpleService.AccountcredResponse response = client.AccountCred(request); 

对于那些使用AX 2012 AIF服务并尝试调用AX(x ++)中的C#或VB项目的用户,遇到“无法find默认端点”“找不到合同”的错误 …回去到您的visual studio(c#)项目,并在定义您的服务客户端之前添加这些行,然后部署该项目并重新启动AX客户端并重试:请注意,该示例是NetTcp适配器 ,您可以根据需要轻松地使用任何其他适配器。

  Uri Address = new Uri("net.tcp://your-server:Port>/DynamicsAx/Services/your-port-name"); NetTcpBinding Binding = new NetTcpBinding(); EndpointAddress EndPointAddr = new EndpointAddress(Address); SalesOrderServiceClient Client = new SalesOrderServiceClient(Binding, EndPointAddr); 

如果您正在使用PRISM框架使用WPF应用程序,那么configuration应该存在于您的启动项目中(即您的引导程序驻留的项目中)。

简而言之,就是将它从类库中移除并投入启动项目。