WCF Auto-Service d'Accueil - les points de terminaison en C#
Mes premières tentatives de création d'un self service hébergé. Essayer de faire quelque chose qui accepte une chaîne de requête et de retourner une partie de texte, mais ont quelques questions:
- L'ensemble de la documentation parle de points de terminaison d'être créé automatiquement pour chaque adresse de base s'ils ne sont pas trouvés dans un fichier de config. Cela ne semble pas être le cas pour moi, j'ai le "Service a zéro points de terminaison d'application..." l'exception". Spécifier manuellement une base de point de terminaison comme ci-dessous semble résoudre ce problème:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.ServiceModel.Description; namespace TestService { [ServiceContract] public interface IHelloWorldService { [OperationContract] string SayHello(string name); } public class HelloWorldService : IHelloWorldService { public string SayHello(string name) { return string.Format("Hello, {0}", name); } } class Program { static void Main(string[] args) { string baseaddr = "http://localhost:8080/HelloWorldService/"; Uri baseAddress = new Uri(baseaddr); //Create the ServiceHost. using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress)) { //Enable metadata publishing. ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15; host.Description.Behaviors.Add(smb); host.AddServiceEndpoint(typeof(IHelloWorldService), new BasicHttpBinding(), baseaddr); host.AddServiceEndpoint(typeof(IHelloWorldService), new BasicHttpBinding(), baseaddr + "SayHello"); //for some reason a default endpoint does not get created here host.Open(); Console.WriteLine("The service is ready at {0}", baseAddress); Console.WriteLine("Press <Enter> to stop the service."); Console.ReadLine(); //Close the ServiceHost. host.Close(); } } } }
- Comment pourrais-je aller sur la configuration de ce haut pour revenir à la valeur de nom à la méthode SayHello(string nom) lorsque requis ainsi: localhost:8080/HelloWorldService/SayHello?nom=kyle
Je suis en train de marcher avant de courir, mais cela semble juste comme ramper...
Êtes-vous à l'aide .NET 3.5 ou .NET 4 ?? "Créer des points de terminaison par défaut pour l'adresse de base" est une chose nouvelle dans .NET 4 - ne fonctionne pas en 3.5
OriginalL'auteur Kyle | 2010-05-11
Vous devez vous connecter pour publier un commentaire.
Pour votre question sur les points de terminaison par défaut de ne pas être ajoutée:
Consultez cet article de la bibliothèque MSDN pour plus d'informations sur Ce qui est nouveau dans WCF 4 pour les développeurs. Il montre, entre autres choses, comment utiliser les points de terminaison par défaut - vous essentiellement de définir une adresse de base pour votre service et ouvrir le ServiceHost - c'est tout!
Vous pouvez également ajouter des points de terminaison par défaut de manière explicite dans le code, si vous le souhaitez. Donc, si vous avez besoin d'ajouter vos propres points de terminaison, mais alors vous voulez ajouter le système de points de terminaison par défaut, vous pouvez utiliser:
J'ai aussi fonud ce blog ici pour être tout à fait éclairante - Christophe du blog est plein de bonnes et très utile WCF postes - fortement recommandé.
OriginalL'auteur marc_s
Comme pour les livres - voici ma recommandation: le livre que je recommande toujours de se lever et courir dans WCF rapidement est L'apprentissage de la WCF par Michèle Leroux Bustamante. Elle couvre tous les sujets, et dans un très compréhensible et accessible. Cela vous apprendra tout - notions de base, les sujets intermédiaires, la sécurité, le contrôle des transactions et ainsi de suite - que vous avez besoin de savoir pour écrire de haute qualité, utiles services WCF.
L'apprentissage de la WCF http://ecx.images-amazon.com/images/I/41wYa%2BNiPML._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg
Des sujets plus avancés et les plus regard en profondeur sur la WCF seront couverts par La programmation des Services WCF par Juval Lowy. Il a vraiment de plonger dans tous les détails techniques et de sujets qui présente "la bible" pour la programmation WCF.
La programmation des Services WCF http://ecx.images-amazon.com/images/I/41H2u13a9bL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg
OriginalL'auteur marc_s
Si IIS héberge votre site web service, puis vous obtenez l'amicale "vous avez créé un web service" à la page, en supposant que rien d'autre n'est mauvais. Vous pourriez vouloir essayer quelques WCF tutoriels, que l'on trouve dans Bustamente d'Apprentissage, de la WCF livre, ils vont vite et expliquer beaucoup de choses.
EDIT: Voici une page MSDN qui montre une manière d'obtenir des paramètres de chaîne de requête de votre demande d'appel de service, bel exemple. Il montre l'utilisation de [WebGet] attribut. Si vous ne voulez pas l'utiliser, vous pouvez essayer d'utiliser OperationContext d'obtenir à la demande entrante internals.
OriginalL'auteur Chris O