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。 我发现更新服务引用也解决了这个问题。
脚步:
- 导航到服务参考文件夹
- 展开它
- 右键单击并select更新服务参考
- 观察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应该存在于您的启动项目中(即您的引导程序驻留的项目中)。
简而言之,就是将它从类库中移除并投入启动项目。
- 编译dynamicexpression式所需的一个或多个types无法find。 您是否缺less对Microsoft.CSharp.dll和System.Core.dll的引用?
- 如何在一个generics扩展方法中使用string列名在IQueryable上应用OrderBy?
- 如何在RestSharp中添加文本以请求正文
- 将XDocument转换为Stream
- 如何将date时间插入到SQL数据库表中?
- .NET实现的scrypt
- 如何用ASP.Net MVC制作一个向导
- int x = 10; x + = x–; 在.Net中 – 为什么?
- 为什么不等待Task.WhenAll抛出一个AggregateException?