WCF avec visual studio 2012
Je suis nouvelle programmation WCF, je n'ai suivi la série de didacticiels de mise en route à partir du lien suivant
http://msdn.microsoft.com/en-us/library/ms734712.aspx
Que j'ai hébergé le service dans l'application de la console, mais quand j'ai essayé de créer un client et a essayé d'ajouter une référence de service que j'ai obtenu les exceptions suivantes.
Il y a une erreur de téléchargement
'http: localhost:8000/GettingStarted/mex/_vti_bin/ListData.svc/$métadonnées".
La demande a échoué avec l'état HTTP 405: Méthode Non Autorisée. Les métadonnées
contient une référence qui ne peut pas être résolu:
'http: localhost:8000/GettingStarted/mex'. Il n'y a pas de point de terminaison
de l'écoute à l'adresse http: localhost:8000/GettingStarted/mex qui pourrait
acceptez le message. Cela est souvent causé par une erreur d'adresse ou
SAVON d'action. Voir InnerException, le cas échéant, pour plus de détails. L'
serveur distant a retourné une erreur: (404) Pas Trouvé. Si le service est
défini dans la solution actuelle, essayez de générer la solution et l'ajout de
le service de référence de nouveau.
code de l'hébergement de l'application
class Program
{
static void Main(string[] args)
{
//Step 1 Create a URI to serve as the base address.
Uri baseAddress =
new Uri("http://localhost:8000/GettingStarted/");
//Step 2 Create a ServiceHost instance
ServiceHost selfHost =
new ServiceHost(typeof(CalculatorService), baseAddress);
try
{
//Step 3 Add a service endpoint.
selfHost.AddServiceEndpoint(typeof(ICalculator),
new WSHttpBinding(),
"CalculatorService");
//Step 4 Enable metadata exchange.
var smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
//Step 5 Start the service.
selfHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate.");
Console.WriteLine();
Console.ReadLine();
//Close the ServiceHostBase to shutdown.
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("exception: {0}", ce.Message);
selfHost.Abort();
}
}
}
Maintenant, je suis incapable de comprendre ce qu'est le problème. Je suis à l'aide de visual studio 2012 et .net plate-forme 4.5.
- Tout d'abord avez-vous été en mesure d'organiser avec succès un service? Pouvez-vous partager la sortie de votre application console?
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire, ainsi, de jouer avec cela. Oui vous semblez avoir suivi le tuto correctement, mais si vous voulez vous connecter et de le consommer comme un service (comme dans un service de référence), vous devez également ajouter dans le service MEX enpoint. Ajoutez cette ligne après votre selfhost.Description.Les comportements.Ajouter(smb):
Qui devrait vous permettre de vous connecter via "Ajouter une Référence de Service". Aussi, j'ai trouvé selon votre système, vous devrez peut-être exécuter VS en tant qu'administrateur afin de permettre une connexion de réseau (dans le cas où, par inadvertance, vous dit-il pas dans le passé).
À en juger par le message d'erreur, il semble qu'il n'y a pas de service à l'écoute sur le port spécifié. Vous devez avoir l'application de console qui héberge le service en cours d'exécution lorsque vous essayez d'ajouter une référence de service à elle.
Apparemment, le service n'est pas en cours d'exécution ce qui signifie qu'il n'existe pas de point de terminaison de l'écoute à l'adresse URL que vous utilisez pour créer le service de référence.
Vous pouvez héberger le service IIS, ou de garder la console de l'application en cours d'exécution comme Damir mentionnés ci-dessus.
Assurez-vous que votre serveur est en cours d'exécution lorsque vous tentez d'y accéder. Également vérifier la configuration sur le serveur et assurez-vous que votre client endpoint correspond le serveur de point de terminaison. Assurez-vous que vous utilisez la même liaison, ainsi, pendant que vous y êtes.
Assurez-vous que le serveur est à l'écoute et le pare-feu du serveur n'est pas le blocage de vous.
Si vous faites un changement à votre service WCF n'oubliez pas de régénérer le service de référence pour votre application cliente.
Êtes-vous sûr que vous avez défini un MEX point de terminaison? C'est ce qui fournit des informations de métadonnées à propos de votre service, ainsi que de studio, vous pouvez générer un proxy client.
Dans le tutoriel, vous liés à, il est ce bit:
Si vous hébergez le service web dans IIS, vérifiez dans le web.config(en vertu de comportements section)
httpsGetEnabled est définie sur True
J'ai rencontré un problème similaire aujourd'hui. Cependant, pour moi, il n'était pas nécessaire pour moi d'ajouter explicitement les points de terminaison, comme @iMortalitySX déjà dit.
J'avais une autre raison de ne pas: j'ai été liaison à http://0.0.0.0, en pensant à l'écoute IP n'a pas d'importance. En effet, via SoapUI je était capable de se connecter et d'utiliser le Service. Mais lorsque j'essaie de découvrir le service dans un autre projet Visual Studio, la découverte serait un échec, comme VS serait d'obtenir la réponse initiale, mais ensuite, suivez les liens qui contenait http://0.0.0.0 et puis d'échouer.
De sorte qu'un changement http://0.0.0.0 dans la bonne IP de ma machine fixe mon problème.
Essayer de mettre l'adresse uri dans Votre navigateur. Dans mon cas, j'ai pu voir un ExceptionDetail.