Errore WCF: imansible trovare l’elemento endpoint predefinito che fa riferimento al contratto “UserService.UserService”

Qualche idea su come risolvere questo problema?

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

.

                            

Imansible trovare l’elemento endpoint predefinito che fa riferimento al contratto “UserService.UserService” nella sezione di configurazione del client ServiceModel. Ciò potrebbe essere dovuto al fatto che non è stato trovato alcun file di configurazione per l’applicazione o perché non è stato trovato alcun elemento endpoint che corrisponda a questo contratto nell’elemento client.

Risolto!

Non ho detto che questa era un’applicazione Silverlight. Ho avuto il riferimento wcf in una DLL che aveva il proprio file “ServiceReferences.ClientConfig”. Ho spostato il contenuto del ServiceReferences.ClientConfig della DLL nel principale progetto Silverlight e ha funzionato.

Ho avuto una corsa con lo stesso problema. La mia applicazione era anche un’applicazione Silverlight e il servizio veniva chiamato da una libreria di classi con un UserControl personalizzato che veniva utilizzato al suo interno.

La soluzione è semplice. Copiare le definizioni degli endpoint dal file di configurazione (ad esempio ServiceReferences.ClientConfig) della libreria di classi nel file di configurazione dell’applicazione Silverlight. So che ti aspetteresti che funzioni senza doverlo fare, ma a quanto pare qualcuno a Redmond ha avuto una vacanza quel giorno.

È inoltre ansible impostare questi valori in modo programmatico nella libreria di classi, in modo da evitare spostamenti non necessari dei file di configurazione nella libreria. Il codice di esempio per BasciHttpBinding semplice è –

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

Nel caso in cui qualcuno abbia riscontrato lo stesso problema durante l’utilizzo di WPF (anziché di WCF o Silverlight):

Ho avuto questo errore durante la connessione a un servizio Web. Quando il mio codice era nella soluzione “principale” dell’applicazione WPF, nessun problema, funzionava perfettamente. Ma quando ho spostato il codice nella soluzione DAL-layer più sensata, avrebbe gettato l’eccezione.

Imansible trovare l’elemento endpoint predefinito che fa riferimento al contratto “MyWebService.MyServiceSoap” nella sezione di configurazione del client ServiceModel. Ciò potrebbe essere dovuto al fatto che non è stato trovato alcun file di configurazione per l’applicazione o perché non è stato trovato alcun elemento endpoint che corrisponda a questo contratto nell’elemento client.

Come è stato affermato da “Sprite” in questo thread, è necessario copiare manualmente il tag.

Per le app WPF, ciò significa copiare il tag dall’app.config nella mia soluzione DAL all’app.config nella soluzione principale dell’applicazione WPF.

Mi sono imbattuto nello stesso problema, per quale ragione Visual Studio non ha aggiornato la configurazione web quando ho aggiunto il servizio per la prima volta. Ho riscontrato che l’aggiornamento del Service Reference risolve anche questo problema.

passi:

  1. Passare alla cartella dei riferimenti del servizio
  2. Espandilo
  3. Fare clic destro e selezionare Aggiorna riferimento servizio
  4. Osservare che la configurazione Web sia aggiornata

Cambia il web.config del servizio WCF come “endpoint address =” “binding =” basicHttpBinding “…” (in precedenza vincolante = “wsHttpBinding”) Dopo aver creato l’app, in “ServiceReferences.ClientConfig” “” configuration> ha il valore . Quindi funzionerà bene.

Rinominare l’output.config prodotto da svcutil.exe in app.config. ha funzionato per me

Hai un’interfaccia che la tua class “UserService” implementa.

I tuoi endpoint dovrebbero specificare un’interfaccia per l’attributo del contratto:

 contract="UserService.IUserService" 

Non sono sicuro se questo è un problema. Endpoint e binding hanno entrambi lo stesso nome

Non sono sicuro che sia davvero un problema, ma vedo che hai lo stesso nome per la tua configurazione vincolante ().

Di solito provo a chiamare i miei endpoint qualcosa come “UserServiceBasicHttp” o qualcosa di simile (il “Binding” in realtà non ha nulla da fare qui), e provo a chiamare le mie configurazioni vincolanti qualcosa con “…. Configuration”, ad es. “UserServiceDefaultBinding”, per evitare possibili conflitti di nome.

Marc

Dovevo aggiungere il servizio nel file App.config chiamante per farlo funzionare. Assicurati che tu, dopo tutto. Questo sembrava funzionare per me.

Questo problema si verifica quando si utilizza il servizio tramite un’altra applicazione. Se l’applicazione ha un file di configurazione, aggiungere le informazioni di configurazione del servizio a questo file. Nella mia situazione non c’era alcun file di configurazione, quindi uso questa tecnica e ha funzionato bene. Basta memorizzare l’indirizzo url nell’applicazione, leggerlo e utilizzare il metodo BasicHttpBinding () inviarlo all’applicazione di servizio come parametro. Questa è una semplice dimostrazione di come ho fatto esso:

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

Per coloro che lavorano con i servizi AIF di AX 2012 e provano a chiamare il progetto C # o VB all’interno di AX (x ++) e soffrono di tali errori di “imansible trovare l’endpoint predefinito” … o “nessun contratto trovato” … torna indietro al progetto Visual Studio (c #) e aggiungere queste righe prima di definire il client di servizio, quindi distribuire il progetto e riavviare il client AXE e riprovare: Nota, l’esempio è per l’adattatore NetTcp , è ansible utilizzare facilmente qualsiasi altro adattatore in base alle proprie necessità .

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

Nel caso in cui si utilizzi un’applicazione WPF utilizzando il framework PRISM, la configurazione dovrebbe esistere nel progetto di avvio (ovvero nel progetto in cui risiede il proprio bootstrapper).

In breve basta rimuoverlo dalla libreria di classi e metterlo in un progetto di avvio.