J'ai écrit un service Web .NET qui doit être utilisé par un client hors de mon contrôle (mon serveur est un simulateur pour un serveur en direct écrit en PHP). Le service Web fonctionne comme vous le souhaitez, mais le client n'a pas la possibilité d'ajouter l'extension .asmx, ou toute extension d'ailleurs, dans ses appels. Ils utilisent essentiellement http://localhost/soap/MyWebService tandis que IIS attend http://localhost/soap/MyWebService.asmx. Est-il possible de faire répondre IIS aux demandes sans l'extension .asmx?Appeler un service Web IIS sans l'extension .asmx
Répondre
Ajouter un mappage générique, qui acheminera toutes les demandes par ASP.NET:
Vous aurez également besoin de faire un peu de réécriture d'URL, pour permettre à la requête entrante http://localhost/soap/MyWebService
à la carte à http://localhost/soap/MyWebService.asmx
.
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
Fondamentalement, vous pouvez ajouter quelque chose comme ce qui suit à votre méthode Application_BeginRequest
:
string path = Request.Path;
if (path.Contains("/soap/") && !path.EndsWith(".asmx"))
Context.RewritePath(path + ".asmx");
Je ne l'ai pas testé (et il est un HACK) mais il devrait vous aider à démarrer.
Vous pouvez également le placer dans un répertoire, puis dans IIS le définir comme document par défaut.
Sur le serveur: C: /mywebsite.com/mywebservice/mywebservice.asmx
Dans IIS défini mywebservice.asmx comme document par défaut
Sur le web: http://mywebsite.com/mywebservice
J'ai essayé cela et cela n'a pas fonctionné. – jercra
Il me semble qu'il y a quelque chose de très mauvais avec le client PHP. Ils ne doivent en aucun cas interpréter l'URL du service. Quelle que soit l'URL spécifiée dans les métadonnées du serveur ou dans la configuration du client, il s'agit de l'URL à utiliser.
Je ne connais pas PHP, mais quelqu'un peut-il me dire pourquoi il est logique que PHP prenne soin de combien de points il y a dans une URL? Je ne peux pas voir que cela devrait importer à n'importe quel client si mon service est au http://localhost/foo/bar ou "http://localhost/foo/b.a.r.asmx?PHP=0".
Le problème n'est pas que PHP se soucie du nombre de points qu'il y a. C'est que le client PHP n'est pas sous mon contrôle et l'adresse est codée en dur à http: // localhost/foo/bar et IIS attend http: //localhost/foo/bar.asmx. J'avais besoin d'IIS pour comprendre que les requêtes sans .asmx devraient toujours être traitées. – jercra
Cela commence à confirmer ma conviction pourquoi dans le monde serait-il une bonne idée pour tout client d'un service Web ou d'une autre ressource de coder en dur l'URL ??? Les URL changent. Ils devraient prendre l'URL d'un magasin de configuration. –
En php vous devez appeler le wsdl seulement, vous n'avez pas besoin de l'asxm ou ce genre de choses stupides que .net faire.
un exemple simple
$wsdl = "http://domain/wsdlfile.wsdl"; //url to wsdl
$client = new SoapClient($wsdl,array('trace' => 1,'encoding' => 'UTF-8','exceptions' => 0));
$Return = $client->callfunction();
echo htmlspecialchars($client->__getLastResponse());
qui est tout.
Pardonnez-moi, mais pas même PHP peut appeler un WSDL. Un WSDL décrit simplement le service que PHP appellera plus tard. Le WSDL contiendra généralement l'URL du service réel, qui sera le stupide fichier .asmx. –
- 1. Comment appeler un service Web ASMX via GET?
- 2. Comment appeler un service Web sans référence Web?
- 3. service web asmx: authentification client
- 4. asmx .net 2.0 service web
- 5. Restriction de l'accès au service Web ASMX
- 6. Comment appeler un service Web à partir d'un service Web
- 7. Intercepter l'exception personnalisée du service Web ASMX
- 8. Charger dynamiquement le service Web .asmx
- 9. Comment appeler un service Web WCF à partir de jQuery?
- 10. Comment appeler un service Web dans VB6?
- 11. Utilisation de la réflexion pour appeler un service Web ASP.NET
- 12. Accès à un service Web ASMX à partir de JavaScript
- 13. appeler le service web java par service web .net
- 14. Services Web .NET sans ASP.NET/IIS?
- 15. Services Web .asmx avec SSL
- 16. Comment créer une page de service Web ASMX sans code derrière le fichier
- 17. Comment appeler un service web C# via PHP?
- 18. Création d'un service Web ASMX à partir d'un fichier WSDL
- 19. Newb a besoin d'apprendre comment interroger le service web .asmx
- 20. Comment renvoyer des erreurs d'un service Web ASMX?
- 21. Comment appeler une méthode de service Web?
- 22. Client mobile Windows pour le service Web ASMX
- 23. Décrire les paramètres WebMethod du service Web ASMX
- 24. Commutation parmi les instances d'un service Web (ASMX)
- 25. Le compte d'utilisateur réseau IIS peut-il appeler un service WCF s'exécutant sous un autre compte?
- 26. Comment appeler un service Web à l'aide d'informations d'identification stockées?
- 27. Visual Studio 2008: comment consommer ou appeler un service Web?
- 28. Comment appeler le service Web Axis via un client .NET
- 29. Comment appeler un service Web .NET à partir d'Android?
- 30. Comment appeler un service Web WCF à partir de Silverlight?
Bien que cette solution fonctionne, elle ne fonctionne que sur les systèmes exécutant IIS 6 ou supérieur. – jercra
Il est possible d'ajouter un mappage générique à IIS 5.x, mais les étapes sont différentes. – Brannon
Oui, vous pouvez ajouter un mappage générique à IIS 5.x mais il y a un bogue quand il s'agit de service Web dans lequel vous obtiendrez une erreur sur le verbe ne pas être autorisé. Le bug est plutôt bien noté sur les forums ASP.net. – jercra