Viene visualizzato un errore quando si tenta di utilizzare il client di test WCF con il servizio WCF. Ecco il codice di servizio:Errore client test WCF: impossibile richiamare il servizio
[ServiceContract]
public interface IEmployeeService
{
[OperationContract(Name = "GetEmployee")]
[WebGet(RequestFormat = WebMessageFormat.Xml,
UriTemplate = "/Employees/{employeeNumber}")]
Employee GetEmployee(string employeeNumber);
}
public Employee GetEmployee(string employeeNumber)
{
var employeeNumberValue = Convert.ToInt32(employeeNumber);
var employee = DataProvider.GetEmployee(employeeNumberValue);
return employee;
}
<system.serviceModel>
<services>
<service name="Employees.Services.EmployeeService"
behaviorConfiguration="metaBehavior">
<endpoint address=""
behaviorConfiguration="webHttp"
binding="webHttpBinding"
contract="Employees.Services.IEmployeeService">
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange">
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="metaBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
sono in grado di connettersi al servizio utilizzando il client di prova WCF, ma quando provo a richiamare GetEmployee (employeeNumber) ottengo il seguente errore:
Impossibile invocare il servizio. Possibili cause: il servizio è offline o inaccessibile; la configurazione lato client non corrisponde al proxy; il proxy esistente non è valido. Fare riferimento alla traccia dello stack per ulteriori dettagli. È possibile provare a ripristinare avviando un nuovo proxy, ripristinando la configurazione predefinita o aggiornando il servizio.
Sono riuscito a chiamare questo servizio inviando una richiesta dal browser.
Qualche idea sul motivo per cui non riesco a utilizzare il client di test WCF?
@ stimpy77, ho semplicemente citato dalla risposta collegata da un dipendente di MS. In WCF, il binding si chiama [WebHttpBinding] (http://msdn.microsoft.com/en-us/library/system.servicemodel.webhttpbinding.aspx) e in WSDL 2, si chiama [binding HTTP] (http://www.w3.org/TR/wsdl20-adjuncts/#http-binding), ma è abbastanza chiaro dal contesto cosa significa "web-based" qui. Il termine REST va ben oltre la semplice esposizione dei metodi via HTTP. Si tratta di trattare le cose come risorse e usare i verbi HTTP ecc. Vedi [Richardson Maturity Model] (http://martinfowler.com/articles/richardsonMaturityModel.html). –