2008-12-15 16 views
7

J'ai un service WCF qui a été hébergé sur un service Windows et utilise le point final BasicHttp pour servir les appareils Windows Mobile qui a été connectés.WCF La requête a échoué avec l'état HTTP 405: Méthode non autorisée

Le problème est que, avec l'émulateur de périphérique. Je peux me connecter au service et l'utiliser sans aucun problème, mais avec un périphérique réel. Je reçois l'erreur:

WCF The request failed with HTTP status 405: Method Not Allowed.

J'ai utilisé le code suivant pour implémenter le service.

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(); 
basicHttpBinding.UseDefaultWebProxy = false; 

m_ServiceHost.AddServiceEndpoint(typeof(IKooft), basicHttpBinding, "KooftService"); 
m_ServiceHost.Open(); 

Comment puis-je résoudre ce problème?

Répondre

4

Vérifiez vos extensions IIS, en particulier ceux pour .wsdl sont valables:

Dans IIS:

  • Regardez les propriétés de votre site. Dans l'onglet Répertoire de base, cliquez sur Configuration .
  • Cliquez sur Ajouter (mon chemin est "C: \ Program Files (x86) \ Common Files \ MSSOAP \ BINARIES \ SOAPIS30.DLL")
  • Définissez l'extension .wsdl et permettre "Get" et " post »
  • Sélectionnez "Script Engine" et "Vérifier l'existence du fichier"

cela devrait suffire.

+1

Comme je l'ai mentionné, il est hébergé sur une application de service Windows pas IIS. – mrtaikandi

+1

SOAPIS30.DLL est manquant sur ma boîte de développement et je rencontre un problème similaire. Avez-vous une idée d'où je peux obtenir cette DLL? De quel SDK fait-il partie? – Danielb

+2

Pour répondre à ma propre question, cette DLL provient du Microsoft SOAP Toolkit obsolète. – Danielb

0

Lorsque vous utilisez WCF vous pourriez aussi avoir besoin de cartographier le type de fichier .svc à aspnet_isapi.dll dans IIS.

1

Si vous utilisez un service REST WCF, vous devez définir votre méthode de contrat comme celui-ci:

[OperationContract] 
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)] 
string CheckService(); 

noter en particulier que WebInvoke attribut et Method="POST".

Questions connexes