2009-06-22 4 views
50

J'ai créé un service Web dans .Net et donc l'adresse du fichier de service a une explication automatique générée astucieuse sur la façon dont cela fonctionne. Lorsque j'exécute la page de la machine sur laquelle elle est hébergée, elle a même un formulaire que je peux utiliser pour soumettre des valeurs de test au service. Cependant, sur les machines distantes, il masque le formulaire et donne le message comme vu ci-dessus."Le formulaire de test est uniquement disponible pour les demandes de la machine locale."

Y a-t-il un point à cela? J'ai vu d'autres sites appeler cela "plus sécurisé" mais n'importe qui pourrait créer ses propres formulaires facilement ce qui ne fait rien de plus qu'une nuisance si vous me demandez.

+2

Avez-vous une question? Vous pouvez également indiquer la version .NET que vous utilisez, ou si vous utilisez des services ASMX ou WCF. –

+0

Comment puis-je appeler le webService? Je dois exécuter l'événement quand anychange se produit sur le côté serveur. Dois-je mettre le programme dans le Server HOST? –

Répondre

3

Si vous publiez des métadonnées et qu'il s'agit d'un service Web public/non sécurisé, vous avez raison, il serait assez facile pour quiconque de générer un client simple pour marteler votre service Web. Dans ce cas, le fait que le client Web soit uniquement généré sur la machine locale apparaît comme une nuisance. Si votre service est privé et sécurisé, cependant, ce serait un trou de sécurité énorme, donnant à n'importe qui avec le nom du serveur et du service un client authentifié à utiliser pour potentiellement accéder à vos données et faire toutes sortes de dommages. J'imagine que la politique de génération de l'interface utilisateur pour les services Web ASMX uniquement sur le serveur lui-même était une tentative de fournir de bons outils tout en éliminant les failles de sécurité accidentelles. WCF a éliminé cela dans tous les cas, vous pouvez générer des clients uniquement si les métadonnées sont publiées, et ils doivent implémenter la sécurité correcte afin d'accéder aux services.

+0

Alors, comment puis-je me rendre au travail? – Si8

+2

La réponse ci-dessous (celle avec plus de 120 upvotes) vous dit comment le faire fonctionner - bonne chance! –

+0

J'ai posé cette question: http://stackoverflow.com/questions/41752213/why-is-asmx-giving-an-error-with-pulling-data-from-client-script. Peux-tu aider s'il te plait? – Si8

138

Vous pouvez contourner ce problème en modifiant votre web.config pour inclure ces nœuds:

<configuration> 
    <system.web> 
    <webServices> 
     <protocols> 
      <add name="HttpGet"/> 
      <add name="HttpPost"/> 
     </protocols> 
    </webServices> 
    </system.web> 
</configuration> 

Cela vous permettra de visiter le service Web .asmx via votre navigateur. Vous pouvez ensuite appeler les services Web directement dans votre navigateur, transmettre des arguments et afficher les résultats.

+8

+1 parce que mon application est dans un environnement sécurisé et pour le contrôle qualité, c'est absolument nécessaire. Merci. – BryanGrimes

+7

+1 cela a résolu mon problème .. très utile :) –

+0

Me permet aussi, mais avoir un autre problème, car il me redirige vers la page avec le port spécifié. Comment puis-je supprimer le port de la chaîne d'adresse. –

14

Juste pour info J'utilise .NET 4.0 et j'ai eu le même problème.

Cependant je ...

<add name="HttpSoap12"/> 
<add name="HttpSoap"/> 
<add name="HttpGet"/> 
<add name="HttpPost"/> 

Dans ces mêmes domaines et cela a fonctionné. Mais avec seulement HttpGet et HttpPost il n'a pas.

Questions connexes