Cette erreur de métadonnées est celle que j'obtiens lorsque je navigue vers le service dans un navigateur. Je ne le consomme pas avec un client
et Oui j'ai ajouté <serviceMetadata httpGetEnabled="True"/>
et j'ai un point de terminaison mex défini.
mais ça ne marche toujours pas
J'ai donc créé un service de base à héberger sur IIS7. Nouvelle installation de Windows 7 et VS2010.
J'avais suivi les instructions de cette page à la lettre :
http://msdn.microsoft.com/en-us/library/ms733766.aspx
Je suis convaincu qu'il doit s'agir d'un problème de configuration de IIS7, mais je ne suis pas sûr. Voici la configuration de mon service :
EDIT :
J'ai essayé d'accéder au service avec svcutil et j'ai obtenu l'erreur suivante :
The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..
il est également dit : The HTML document does not contain Web service discovery information.
Je ne sais pas comment le résoudre, cependant..
.svc :
<%@ServiceHost language="C#" Debug="true" Service="DestructionServices.TacticalNukeSVC
"%>
.cs (situé dans le dossier C:\Development\HostedDestructionServices\App_Code dossier) :
using System;
using System.ServiceModel;
namespace DestructionServices
{
[ServiceContract]
public interface INukeInterface
{
[OperationContract]
string FireMissile();
[OperationContract]
string DirectFire(double x, double y, double z);
[OperationContract]
void EnterCoordinates(double x, double y, double z);
}
public class TacticalNukeSVC : INukeInterface
{
public string FireMissile()
{
return "Boom";
}
public void EnterCoordinates(double x, double y, double z)
{
//bah, who cares about coordinates..
}
public string DirectFire(double x, double y, double z)
{
return "Fired at: " + x + ", " + y + ", " + z;
}
}
}
Web.Config :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<services>
<service name="DestructionServices.Destro" behaviorConfiguration="MetadataBehavior">
<endpoint address="" binding="wsHttpBinding" contract="DestructionServices.INukeInterface" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MetadataBehavior">
<serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True" />
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>