Erro WCF – Não foi possível encontrar o elemento de terminal padrão que faz referência ao contrato ‘UserService.UserService’

Alguma idéia de como consertar isso?

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

.

                            

Não foi possível encontrar o elemento de terminal padrão que faz referência ao contrato ‘UserService.UserService’ na seção de configuração do cliente ServiceModel. Isso pode ter ocorrido porque nenhum arquivo de configuração foi localizado para seu aplicativo ou porque nenhum elemento de terminal correspondente a esse contrato pôde ser localizado no elemento do cliente.

Resolvido!

Eu não mencionei que este era um aplicativo do Silverlight. Eu tinha a referência wcf em uma DLL que tinha seu próprio arquivo “ServiceReferences.ClientConfig”. Mudei o conteúdo do ServiceReferences.ClientConfig da DLL para o projeto principal do silverlight e funcionou.

Eu tive uma corrida com o mesmo problema. Meu aplicativo também era um aplicativo do Silverlight e o serviço estava sendo chamado de uma biblioteca de classs com um UserControl personalizado que estava sendo usado nele.

A solução é simples. Copie as definições de terminal do arquivo de configuração (por exemplo, ServiceReferences.ClientConfig) da biblioteca de classs para o arquivo de configuração do aplicativo do silverlight. Eu sei que você esperaria que funcionasse sem ter que fazer isso, mas aparentemente alguém em Redmond tinha umas férias naquele dia.

Você também pode definir esses valores programaticamente na biblioteca de classs, isso evitará o movimento desnecessário dos arquivos de configuração na biblioteca. O código de exemplo para BasciHttpBinding simples é –

 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:///Service1/Service1.svc"); Service1Client proxyClient = new Service1Client(basicHttpbinding,endpointAddress); 

Apenas no caso de alguém atingir o mesmo problema ao usar o WPF (em vez de WCF ou Silverlight):

Eu tive esse erro ao conectar-me a um serviço da Web. Quando meu código estava na solução “principal” do aplicativo WPF, sem problemas, funcionou perfeitamente. Mas quando eu movi o código para a solução mais sensata da camada DAL, ele lançava a exceção.

Não foi possível encontrar o elemento de terminal padrão que faz referência ao contrato ‘MyWebService.MyServiceSoap’ na seção de configuração do cliente ServiceModel. Isso pode ter ocorrido porque nenhum arquivo de configuração foi localizado para seu aplicativo ou porque nenhum elemento de terminal correspondente a esse contrato pôde ser localizado no elemento do cliente.

Como foi afirmado por “Sprite” neste tópico, você precisa copiar manualmente a tag.

Para aplicativos WPF, isso significa copiar a tag do app.config na minha solução DAL para o app.config na solução principal do aplicativo WPF.

Eu corri para o mesmo problema, por alguma razão, o Visual Studio não atualizou a configuração da web quando adicionei o serviço pela primeira vez. Descobri que atualizar o Service Reference também corrigiu esse problema.

Passos:

  1. Navegue até a pasta de referência de serviço
  2. Expandir
  3. Clique com o botão direito e selecione Referência de serviço de atualização
  4. Observe o webconf ser atualizado

Altere o web.config do serviço WCF como “endpoint address =” “binding =” basicHttpBinding “…” (binding anterior = “wsHttpBinding”) Depois de construir o aplicativo, em “ServiceReferences.ClientConfig” “” configuration> tem o valor . Então vai funcionar bem.

Renomeie o output.config produzido por svcutil.exe para app.config. funcionou para mim.

Você tem uma interface que sua class “UserService” implementa.

Seus terminais devem especificar uma interface para o atributo do contrato:

 contract="UserService.IUserService" 

Não tenho certeza se isso é um problema. Endpoint e binding ambos têm o mesmo nome

Não tenho certeza se é realmente um problema, mas vejo que você tem o mesmo nome para a configuração de binding ().

Eu costumo tentar chamar meus endpoints algo como “UserServiceBasicHttp” ou algo similar (o “Binding” realmente não tem nada a ver aqui), e eu tento chamar minhas configurações de binding de algo com “…. Configuração”, por exemplo “UserServiceDefaultBinding”, para evitar possíveis conflitos de nomes.

Marc

Tive que adicionar o serviço no arquivo chamado App.config para que funcionasse. Certifique-se de que você, mas depois de tudo. Isso pareceu funcionar para mim.

Esse problema ocorre quando você usa seu serviço por meio de outro aplicativo. Se o aplicativo tiver um arquivo de configuração, apenas adicione suas informações de configuração de serviço a esse arquivo. Na minha situação não houve qualquer arquivo de configuração, então eu uso essa técnica e funcionou bem.Apenas armazenar endereço URL no aplicativo, lê-lo e usando o método BasicHttpBinding () enviá-lo para o aplicativo de serviço como parâmetro.Esta é uma demonstração simples como eu fiz isto:

 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); 

Para aqueles que trabalham com serviços AIF 2012 AIF e tentam chamar lá C # ou projeto VB dentro do AX (x ++) e sofrem de tais erros de “não pôde encontrar endpoint padrão” … ou “nenhum contrato encontrado” … voltar ao seu projeto visual studio (c #) e adicione essas linhas antes de definir seu cliente de serviço, implemente o projeto e reinicie o cliente AX e tente novamente: Nota: o exemplo é para o adaptador NetTcp , você poderia facilmente usar qualquer outro adaptador, conforme sua necessidade .

  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); 

Caso você esteja usando o aplicativo WPF usando a estrutura PRISM, a configuração deve existir em seu projeto de boot (isto é, no projeto onde seu bootstrapper reside).

Resumindo, apenas remova-o da biblioteca de classs e coloque-o em um projeto de boot.