Comment utiliser un service WCF avec HTTP Get (au sein de Visual Studio 2010)
-
28-09-2019 - |
Question
Nous avons essayé d'utiliser un très très simple service WCF avec un Http Get et nous ne pouvons le faire fonctionner. Nous avons suivi ces « guide », mais il ne fonctionne pas
- 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
Quand nous appelons notre service à l'adresse suivante, nous obtenons une page non trouvée erreur:
L'URL de base (http: // localhost: 9999 / Service1.svc). Fonctionne très bien et renvoie la page d'information de service WCF correctement
Ce sont les étapes et le code pour reproduire notre exemple.
- créer dans Visual Studio 2010, un nouveau "service WCF Application" Projet
-
Remplacez l'interface IService avec ce code
[ServiceContract()] public interface IService1 { [OperationContract()] [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetData/{value}")] string GetData(string value); }
-
Remplacer la classe de service avec ce code
public class Service1 : IService1 { public string GetData(string value) { return string.Format("You entered: {0}", value); } }
-
Le regard web.config comme celui-ci
<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>
- Appuyez sur Exécuter et essayer d'appeler la méthode Get
Si quelqu'un obtenir ce ou quelque chose de travail similaire, il serait très gentil si vous pouviez répondre des informations sur l'exemple de travail.
Merci beaucoup
La solution
Je recréée votre échantillon -. Fonctionne comme un charme
Un point: faire votre contrat de service (public interface IService1
) et la mise en œuvre de services (public class Service1 : IService1
) existent dans un espace de noms .NET ??
Si oui, vous devez changer votre * .svc et votre web.config
pour inclure:
<services>
<service name="Namespace.Service1">
<endpoint address="" binding="webHttpBinding"
contract="Namespace.IService1"
behaviorConfiguration="WebBehavior1">
</endpoint>
</service>
</services>
L'attribut <service name="...">
et le <endpoint contract="...">
doit inclure l'espace de noms .NET pour que cela fonctionne.