Come aggiungere un riferimento al servizio a un client WCF per un servizio web che richiede certificato di autenticazione client

StackOverflow https://stackoverflow.com/questions/1283374

Domanda

Attenzione, avviso noobie WCF

Ho bisogno di creare un client WCF per interrogare un servizio Web non WCF. Il servizio Web non è un servizio WCF. Inoltre, il servizio web richiede un certificato di autenticazione client. Ora, ho il certificato, e può creare un client non-WCF che funziona perfettamente; Sono stato in grado di 'Aggiungi riferimento Web' una finestra di dialogo aperta fino certificato per permettermi di selezionare il certificato appropriato e, poi ha continuato a creare il riferimento web. Cercando di creare un client WCF via 'Aggiungi riferimento al servizio' è un'altra storia, semplicemente non riesce con un errore negato 403 Access.

Ho il WSDL per il servizio, e hanno eseguito svcutil.exe su di esso, ma non sono sicuro di come procedere da lì.

Grazie per qualsiasi aiuto!

È stato utile?

Soluzione

sto supponendo che il servizio si sta utilizzando sta eseguendo l'autenticazione client SSL.

Dal momento che sta venendo a mancare riferimento al servizio aggiuntivo, è possibile utilizzare svcutil generare il client dal file WSDL che hai. Credo che la sintassi sarebbe qualcosa di simile:

svcutil *.wsdl /l:C# /out:Reference.cs /config /s /ct:System.Collections.Generic.List`1 /ser:Auto /tcv:Version35 /n:*,<NameOfYourNamespaceHere> /edb

Questo genererà un file, Reference.cs, che contiene le classi proxy per il servizio (che si può dare questo file qualsiasi nome che si desidera). Aggiungere questo file al progetto. Un file di configurazione, output.config, sarà anche generato. È possibile aggiungere questa configurazione per la configurazione dell'applicazione invece di digitare tutto in mano.

Ora è possibile seguire questo articolo di MSDN sull'utilizzo sicurezza del trasporto con l'autenticazione di certificati . È possibile saltare fino alla sezione client in cui si mostra come collegare il certificato per la richiesta nel codice, così come nella configurazione.

In bocca al lupo.

Altri suggerimenti

So che questa è la vecchia questione ed è stato già risolto, ma vorrei ricordare che Aggiungi riferimento al servizio funziona anche per i file WSDL memorizzati su disco. Marc ha anche parlato. Aggiungere dialogo riferimento al servizio accetta:

  • URL WSDL
  • URL di Metadata Exchange endpoint
  • URL del servizio in cui viene aggiunto internamente / mex
  • Ogni percorso del file per file WSDL

Quindi, se avete WSDL e tutto serve file XSD è possibile utilizzare Aggiungi riferimento al servizio pure. L'unica parte difficile è che Aggiungere dialogo riferimento al servizio non ha pulsante Sfoglia e questo è il motivo per cui questa funzionalità non è ben nota.

Domanda stupida (forse): potrebbe connettersi al endpoint del servizio, presentare con i tuoi credenziali memorizzate nel certificato, e quindi scaricare il WSDL (e possibilmente XSD) da lì? Oppure potrebbe essere l'offerta di entità tale servizio sarebbe in grado di effettivamente inviare questi file (o renderli disponibili per il download)?

Una volta che hai il WSDL (e XSD) file su disco, dovrebbe essere abbastanza facile per creare client di WCF per questo (utilizzando svcutil.exe o Add Service Reference) sulla base di tali file, e quindi configurare la protezione appropriata per questo.

Solo un pensiero .... (valore di $ 0.02?)

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top