Impossibile chiamare direttamente un servizio WCF (.NET 3.0)
Domanda
Sto lavorando con WCF (VS2005, .Net 3.0) e si vuole testare un servizio chiamando direttamente tramite un browser web anziché dal codice.
Ho un metodo decorato con l'OperationContract attributo chiamare GetTest (). Ho il servizio dietro un file .svc che posso accedere; tuttavia, quando vado ... / Test.svc / GetTest, solo uno schermo vuoto viene in su.
Ecco il web.config:
<system.serviceModel>
<services>
<service name="TestService" behaviorConfiguration="TestBehavior">
<endpoint
address=""
binding="basicHttpBinding"
contract="TestService.ITestService"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TestBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Ogni volta che provo a impostare un punto di interruzione nel servizio, non ottiene colpito pure. Tutte le idee su dove sto andando male qui? Sono abituato a servizi ASMX dove ottengo una risposta quando accedo i metodi attraverso un browser; tuttavia, posso solo ottenere il "Hai creato un servizio" pagina quando accedo al servizio, ma nulla dai metodi.
Soluzione
WCF non offre le opzioni "chiamare dal web" che i servizi ASMX utilizzati per fare. Perché? Si tratta di un buco di sicurezza enorme, e non il modo migliore per testare un servizio web.
Una possibilità è quella di fare come suggerito @Yossi, e utilizzare lo strumento di misura servizio WCF.
O meglio ancora, scrivere il proprio cliente a consumare il servizio web. Questo vi aiuterà a trattare con gli stessi problemi coloro che consumerà il vostro servizio si occuperà, e mi creda, WCF possono avere un bel po 'di quei hangups.
Non fraintendetemi, WCF è frikkin impressionante! Ma c'è un sacco di destreggiarsi, e se siete nuovi probabilità sono che stai andando a sbagliare. Anche i primi ad adottare ancora non sanno tutti i pro ei contro di WCF.
Altri suggerimenti
Si consiglia di utilizzare l'href="http://msdn.microsoft.com/en-us/library/bb552364.aspx" rel="nofollow noreferrer"> servizio WCF Test Tool per il test iniziale di il servizio (ma test di unità davvero- è tuo amico :-)) (e sì - avrete bisogno di un mex endpoint, almeno inizialmente)
Per quanto riguarda il debug - stai attaccato al processo che ospita il servizio corretto? stai compilato con i simboli di debug? se il servizio viene pubblicato a IIS -? è il codice pubblicato lo stesso del codice in Visual Studio
Hai provato a usare SoapUI ? Essi forniscono un davvero ottimo strumento Testing Web Services. Hanno anche una versione gratuita che verrà eseguito come webstart!
Inoltre, provare a installare un mex endpoint, c.f. MSDN collegamento.
Date un'occhiata a WebGetAttribute -. Che ha bisogno di .NET 3.5
Questo consente di ottenere i dati REST da un servizio Web WCF.