2012-04-10 13 views
1

Ich verstehe, dass Classic ASP keine bevorzugte Sprache ist und dass es aufgegeben werden sollte. Das sind sicherlich meine Gedanken. In jedem Fall, nehmen wir an, es ist meine einzige Option.Verbinden mit WCF mit Zertifikatsauthentifizierung in Classic ASP

Das Problem

Ich habe einen WCF-Web-Dienst in C# irgend uri https://blah/blah.svc gehostet geschrieben. Ich habe mit einem klassischen ASP-Client gesprochen, indem ich manuell SOAP-Aufrufe gebildet und Server.CreateObject ("Msxml2.XMLHTTP.3.0") verwendet habe, um Anfragen zu stellen und Antworten zu erhalten.

Jetzt wurde der WCF-Dienst aktualisiert, um die Zertifikatauthentifizierung zu verwenden. Ich habe gesehen, Clients verwenden Cert Auth in PHP und .NET, aber ich habe keine Ahnung, wie man mit Classic ASP verbinden würde.

Irgendwelche Ideen?

Beispiel meiner aktuellen klassischen ASP-Client

Dim objXMLHTTP : set objXMLHTTP = Server.CreateObject("Msxml2.XMLHTTP.3.0") 
Dim strRequest, strResult, strFunction, strURL, strNamespace 

strNamespace = "http://tempuri.org/IBlah/test" 
strURL = "https://blah/Blah.svc" 

strFunction = "test" 

strRequest = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/"">" _ 
& " <soapenv:Header/>" _ 
& " <soapenv:Body>" _ 
& "  <tem:test>" _ 
& "   <tem:testdata>" & testdata & "</tem:testdata>" _ 
& "  </tem:test>" _ 
& " </soapenv:Body>" _ 
& "</soapenv:Envelope>" 

objXMLHTTP.open "post", strURL, False 

objXMLHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 

objXMLHTTP.setRequestHeader "SOAPAction", strNamespace 

'send the request and capture the result 
Call objXMLHTTP.send(strRequest) 
response = objXMLHTTP.responseText 
+0

Werfen Sie einen Blick auf die Antwort von Simian in der folgenden SO Frage: [SOAP API HTTPS - Verbindung mit Classic ASP] (http://stackoverflow.com/questions/4648207/soap-api-https-connecting-with- Klassiker-Asp). Hier ist eine weitere Frage zu SO zum Thema: [Kann HTTPS mit ServerXMLHTTP-Objekt nicht verwenden] (http://stackoverflow.com/questions/9212985/cant-use-https-with-serverxmlhttp-object). –

+0

@GuidoGautier Die zweite Empfehlung könnte auf dem richtigen Weg sein. Ich werde pjumble's Antwort geben. – bdeetz

Antwort

0

Wenn es eine Möglichkeit gibt, - statt diese auf der Seite einen „Proxy“, das ein Verfahren ist, dass Sie Ihre Anfrage per Ajax veröffentlichen können verwenden ASPX für den Bau, die wiederum mit dem nachgeschalteten Dienst kommunizieren und Ihnen die Antwort zurücksenden würden.

In diesem Fall könnte Ihr Proxy (Anwendung) eine MVC-Anwendung mit WCF-Client sein.

Es ist schwierig, verschlüsselte SOAP-Nachrichten manuell zu erstellen, besonders von Ajax.