Come utilizzare un servizio WCF con HTTP Get (all'interno di Visual Studio 2010)
-
28-09-2019 - |
Domanda
Abbiamo cercato di usare un molto molto semplice servizio WCF con un HTTP GET e non si può ottenere il lavoro. Abbiamo seguito quelli "guida", ma non funziona
- http://msdn.microsoft.com/en-us/library/ bb412178.aspx
- http://www.dotnetfunda.com/articles/article779-simple-5-steps-to-expose-wcf-services-using-rest-style-.aspx
Quando chiamiamo il nostro servizio con il seguente URL, otteniamo un errore di pagina non trovata:
l'URL di base (http: // localhost: 9999 / Service1.svc). Funziona bene e restituisce correttamente la pagina di informazioni di servizio WCF
Questi sono i passi e il codice per riprodurre il nostro esempio.
- In Visual Studio 2010, creare un nuovo "servizio WCF Application" Progetto
-
Sostituire l'interfaccia IService con questo codice
[ServiceContract()] public interface IService1 { [OperationContract()] [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetData/{value}")] string GetData(string value); }
-
Sostituire la classe di servizio con questo codice
public class Service1 : IService1 { public string GetData(string value) { return string.Format("You entered: {0}", value); } }
-
Il look web.config come questo
<system.web> <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <services> <service name="Service1"> <endpoint address="" binding="webHttpBinding" contract="IService1" behaviorConfiguration="WebBehavior1"> </endpoint> </service> </services> <behaviors> <endpointBehaviors> <behavior name="WebBehavior1"> <webHttp helpEnabled="True"/> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors>
- Premere Esegui e provare a chiamare il metodo Get
Se qualcuno ottenere questo o qualcosa di lavoro simile, sarebbe molto gentile se potesse rispondere informazioni sulla esempio di lavoro.
La ringrazio molto
Soluzione
Ho ricreato il campione -. Funziona come un fascino
Un punto: fare il vostro contratto di servizio (public interface IService1
) e implementazione del servizio (public class Service1 : IService1
) esistere all'interno di un namespace .NET ??
Se è così, è necessario modificare la vostra * .svc e la tua web.config
per includere:
<services>
<service name="Namespace.Service1">
<endpoint address="" binding="webHttpBinding"
contract="Namespace.IService1"
behaviorConfiguration="WebBehavior1">
</endpoint>
</service>
</services>
L'attributo <service name="...">
ed il <endpoint contract="...">
deve includere il namespace .NET per questo al lavoro.