2009-08-07 3 views
2

J'ai besoin d'accéder simultanément à plusieurs instances d'un service Web avec l'URL suivante. Les services Web sont hébergés dans IIS et SSL est activé.Comment simuler un fichier hôte pendant le temps d'une requête

https://services.mysite.com/data/data.asmx

Habituellement, quand nous faisons ce processus manuellement, nous allons un par un et mettre à jour le fichier hôte Windows (c: \ Windows \ System32 \ drivers \ etc \ hosts) comme celui-ci:

192.1.1.100 services.mysite.com

Je voudrais automatiser le processus et le faire avec un peu de multithreading. Donc je ne peux pas changer le fichier Host. Existe-t-il un moyen de simuler un fichier hôte lorsque nous faisons une requête HTTP en C#?

Merci!

+0

Avez-vous déjà trouvé une solution? Je voudrais faire quelque chose de similaire, mais je veux juste frapper un domaine régulier (par exemple google.com) mais le faire pointer vers des ips différents. – downatone

Répondre

0

Si vous connaissez l'adresse IP du point de terminaison SSL du serveur (qui n'est pas nécessairement la même que l'adresse IP par défaut du serveur), alors vous pourriez simplement viser votre service web? Évidemment, la vérification SSL échouera, mais vous pouvez la désactiver par le code ...

ServicePointManager.ServerCertificateValidationCallback += delegate 
{ 
    return true; // you might want to check some of the certificate detials... 
}; 
+0

Je reçois "La requête a échoué avec le statut HTTP 403: Interdit.". ServicePointManager.ServerCertificateValidationCallback + = délégué {return true; } dataUrl = "http: //machine1/dataaccess/DataService.asmx"; DataService dataService = nouveau DataService (dataUrl); Renvoie dataService.GetData(); Le problème est que sans le fichier hôte, je ne peux pas utiliser cette Url: https://services.mysite.com/data/data.asmx. Comment frapper une machine spécifique et contourner SSL? – Martin

0

Je pense que vous obtenez le même effet en définissant le serveur proxy de cette requête spécifique à l'adresse IP du serveur Web réel auquel vous voulez envoyer la requête.

0

Vous pouvez modifier l'URL que votre demande est de frapper à l'exécution, quelque chose comme ceci:

svc.Url = "http://firstServer.com"; 

Donc, si vous créez un programme qui boucle à travers chacun de vos serveurs souhaités, simplement mettre à jour la propriété URL directement (cet exemple provient de services Web basés sur WSE 3).

+0

Je ne peux pas faire ça ... Sinon SSL va échouer. – Martin

+0

Pourquoi le SSL échouerait-il? –

+0

Parce que SSL recherche le domaine, non? – Martin

Questions connexes