Cette question est déjà posée ailleurs, mais ces choses ne sont pas les solutions pour mon problème.
Ceci est mon service p> J'ai ce code pour appeler ce qui précède Service P> XElement data = new XElement("SampleItem",
new XElement("Id", "2"),
new XElement("StringValue", "sdddsdssd")
);
System.IO.MemoryStream dataSream1 = new MemoryStream();
data.Save(dataSream1);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:2517/Service1/Create");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// You need to know length and it has to be set before you access request stream
request.ContentLength = dataSream1.Length;
using (Stream requestStream = request.GetRequestStream())
{
dataSream1.CopyTo(requestStream);
byte[] bytes = dataSream1.ToArray();
requestStream.Write(bytes, 0, Convert.ToInt16(dataSream1.Length));
requestStream.Close();
}
WebResponse response = request.GetResponse();
6 Réponses :
Exécutez une application WCF pour la première fois?
exécutez ci-dessous la commande pour enregistrer wcf. p>
La première chose est de connaître l'URL exacte pour votre service de repos. Depuis que vous avez spécifié Assurez-vous maintenant que vous avez l'exemple dans votre application client définie dans la même espace de noms de votre serveur ou assurez-vous que la chaîne XML que vous construisie est l'espace de noms approprié pour le service. Pour identifier que la chaîne XML d'objet échantillon peut être désérialisée à l'objet sur le serveur. P> J'ai l'exemple défini sur mon serveur comme indiqué ci-dessous: P> http: // localhost: 2517 / Service1 / Créer code> Essayez maintenant d'ouvrir la même URL à partir de c.-à-d. Et que vous devriez obtenir la méthode non autorisée comme méthode code> Créer code> est défini pour webinvoke et c'est-à-dire un webgget. string sample = "<SampleItem xmlns=\"http://schemas.datacontract.org/2004/07/XmlRestService\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><Id>6</Id><StringValue>from client testing</StringValue></SampleItem>";
string serviceBaseUrl = "http://localhost:2517/Service1";
string resourceUrl = "/Create";
string method="POST";
UseHttpWebApproach<string>(serviceBaseUrl, resourceUrl, method, sample);
Je reçois le serveur distant renvoyé une erreur: (405) méthode non autorisée.
Comment votre service a-t-il hébergé? Avez-vous une entrée dans le global.aSax. Vérifiez également si la page d'aide est activée et à partir de celle-ci, essayez de trouver l'URL de la méthode que vous essayez de poster et de voir que l'URL est correcte.
L'aide est de travailler, je peux voir les services dans le navigateur et obtenir travaille dans le navigateur. Le service est hébergé via VS Server et j'ai des itinéraires enregistrés dans le global.asax
Pouvez-vous supprimer l'attribut vide Uritemplate et voir si cela fonctionne. Aussi votre page d'aide donnerait à l'URL de la méthode de création pendant la poste
La page donne une URL de création lors de l'aide. J'ai supprimé le modèle URI mais je reçois toujours une exception 405
Pouvez-vous utiliser simplement cela sans créer dans votre URI?
Je n'ai pas de créer dans l'Uri
Après avoir passé 2 jours à ce sujet, en utilisant VS 2010 .NET 4.0, IIS 7.5 WCF et reposez-vous avec JSON ResponseWrapped, je l'ai enfin craqué en lisant de "lors de l'enquête plus poussée ..." ici Le service Web Service Code client généré. CODE> Là, d'où la méthode InvalidProtocol InvalidProtocol, 405 non autorisée. STROND> problème est cependant, ce fichier est régénéré lorsque vous actualisez la référence de service, et vous avez également besoin d'une référence DLL au système J'ai donc décidé de modifier manuellement le fichier de référence.cs et de conserver une copie. La prochaine fois que je l'rafraîchi, je vais fusionner mon La façon dont je le vois, c'est un bug avec svcutil.exe ne reconnaissant pas que certaines des méthodes de service sont . Servicemodel.web code>, pour l'attribut webget. P>
WebGet () S code> de retour dans. P>
obtenez code> et pas seulement post code>, même si le WSDL et Aide à ce que le service Web WCF IIS publie, comprend que les méthodes sont post code> et obtenez code> ??? J'ai enregistré ce numéro avec Microsoft Connect. P>
Quand cela m'est arrivé, je viens simplement d'ajouter le mot post code>
au nom de la fonction, et cela a résolu mon problème. Peut-être que cela aidera certains d'entre vous aussi. P>
Dans le cas où je suis venu contre, il y avait une autre cause: le code sous-jacent tentative de faire un webdav < / a> mettre. (Cette application particulière était configurable pour activer cette fonctionnalité si nécessaire; la fonctionnalité était, à l'insu de moi, activée, mais l'environnement du serveur Web nécessaire n'a pas été configuré. P>
Espérons que cela peut aider quelqu'un d'autre. P>
Le problème que j'ai corrigé, car votre service est sécurisé par identifiant de connexion avec nom d'utilisateur et mot de passe, essayez de configurer le nom d'utilisateur et le mot de passe sur la demande, cela fonctionnera. Bonne chance! P>
À quoi ressemblent vos itinéraires?
Veuillez ajouter n'importe quelle configuration / code de configuration de la liaison que vous utilisez.
Vous définissez Contentype vers "Application / X-www-Form-Urlencodé". Mais vous envoyez des données XML. Pouvez-vous définir le type de contenu sur "Application / XML"
Je n'ai pas de configuration contraignante