2009-08-07 2 views
2

Ich muss simultan mehrere Instanzen eines Web-Services mit der folgenden URL zugreifen. Die Webdienste werden in IIS gehostet und SSL aktiviert.So simulieren Sie eine Host-Datei für die Zeit einer Anfrage

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

Normalerweise, wenn wir diesen Prozess manuell zu tun, gehen wir eins nach dem anderen und die Windows-Host-Datei aktualisieren (c: \ Windows \ System32 \ drivers \ etc \ hosts) wie folgt aus:

192.1.1.100 services.mysite.com

Ich möchte den Prozess automatisieren und es mit etwas Multithreading tun. Daher kann ich die Host-Datei nicht ändern. Gibt es eine Möglichkeit, eine Host-Datei zu simulieren, wenn wir eine HTTP-Anfrage in C# machen?

Danke!

+0

Haben Sie jemals eine Lösung bekommen? Ich würde gerne etwas ähnliches machen, aber ich möchte nur eine reguläre Domain (z. B. google.com) erreichen, aber es muss auf verschiedene ips verweisen. – downatone

Antwort

0

Wenn Sie die IP-Adresse des SSL-Endpunkts des Servers kennen (die nicht unbedingt mit der Standard-IP-Adresse des Servers übereinstimmt), können Sie Ihren Web-Service darauf ausrichten? Offensichtlich die SSL-Prüfung wird fehlschlagen, aber Sie können das durch Code deaktivieren ...

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

Ich bekomme "Die Anfrage ist mit dem HTTP-Status 403: Forbidden fehlgeschlagen.". ServicePointManager.ServerCertificateValidationCallback + = delegate {return true; }; dataUrl = "http: // machine1/dataaccess/DataService.asmx"; DataService dataService = neuer DataService (dataUrl); Rückgabe dataService.GetData(); Das Problem ist, dass ich ohne die Host-Datei diese URL nicht verwenden kann: https://services.mysite.com/data/data.asmx. Wie treffe ich eine bestimmte Maschine und umgehe SSL? – Martin

0

Ich denke, Sie erhalten den gleichen Effekt, indem Sie den Proxy-Server dieser spezifischen Anfrage auf die IP-Adresse des tatsächlichen Web-Servers setzen, an den Sie die Anfrage senden möchten.

0

Sie können die URL ändern, die Ihre Anfrage zur Laufzeit trifft, etwa so:

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

Also, wenn Sie ein Programm erstellen, das durch jede Ihrer gewünschten Server-Loops, aktualisieren Sie einfach die URL-Eigenschaft direkt (Dieses Beispiel stammt von WSE 3-basierten Webdiensten.

+0

Ich kann das nicht tun ... Andernfalls schlägt SSL fehl. – Martin

+0

Warum würde SSL fehlschlagen? –

+0

Da SSL nach der Domäne sucht, nein? – Martin