Point de terminaison de Service n'est pas trouvée?
Semblent fonctionner dans un point de terminaison de service pas trouvé de problème lorsque vous essayez d'obtenir à partir de mon service.
si j'essaie http://localhost:8000/hello/help je devrais attendre de voir <string>You entered help <string>
mais je seulement obtenir le point de terminaison de la place? Je n'ai pas touché mes fichiers de config et je suis juste d'hébergement d'une application console.
De l'hôte:
namespace Host
{
class Program
{
static void Main(string[] args)
{
WebHttpBinding binding = new WebHttpBinding();
WebServiceHost host =
new WebServiceHost(typeof(Service1));
host.AddServiceEndpoint(typeof(IService1),
binding,
"http://localhost:8000/hello");
host.Open();
Console.WriteLine("Hello world service");
Console.WriteLine("Press <RETURN> to end service");
Console.ReadLine();
}
}
}
Service1:
namespace WcfServiceLibrary1
{
//NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together.
public class Service1 : IService1
{
public string GetData(string value)
{
return string.Format("You entered: {0}", value);
}
IService1:
[ServiceContract]
public interface IService1
{
[WebGet(UriTemplate = "/{value}")]
string GetData(string value);
OriginalL'auteur Garrith Graham | 2012-03-25
Vous devez vous connecter pour publier un commentaire.
Supprimer le /à partir de {valeur} et assurez-vous qu'il est répertorié comme un
OperationContract
. Il doit être:L'URL de base viendra avec le slash de fin, vous êtes vraiment à la recherche de
http://localhost:8000/hello//help
dans le code actuelJ'ai mis à jour ma réponse, j'ai remarqué que vous êtes également absente de l'OperationContractAttribute.
lol contrat d'opération manquait! +1
Par curiosité, pouvez-vous essayer avec et sans le slash. Par tout ce que j'ai vu, la première valeur n'est jamais précédé d'un slash, donc je suis curieux de savoir si elle est ou non une différence?
yup ne fait aucune différence, mais... faire /aide/renvoie uniquement à l'aide! Mais localhost:8000/bonjour/help renvoie également à l'aide!
OriginalL'auteur Justin Pihony
Un coup de poignard dans le noir ... par défaut, le caractère arbitraire des processus ne sont pas autorisés à écouter sur les ports réseau.
Si IIS est installé, le compte qui exécute IIS est donné la permission si vous voulez d'autres applications exécutées par d'autres comptes (les applications de console, les services windows) pour pouvoir les écouter sur un port, vous devez accorder l'autorisation.
Découvrez la
netsh ajouter urlacl
de commande comme point de départ.Être administrateur ne signifie pas que vous avez tous les privilèges - juste que vous avez le pouvoir de leur accorder à vous-même. J'ai été récemment travaillé sur un service windows qui s'auto hébergé un service WCF (afin de permettre la reconfiguration à la volée) - mon service était inaccessible jusqu'à ce que j'ai utilisé des commandes netsh pour accorder l'autorisation. J'ai été en utilisant VS2010 en cours d'exécution sur Windows Server 2008 R2 à l'époque.
OriginalL'auteur Bevan