기존의 고전 ASP 프로그램이 asp.net 웹 서비스를 사용할 수 있도록 코드를 만들려고합니다. 고전적인 ASP에서 업데이트하는 것은 옵션이 아닙니다. 저는 큰 회사에서 일하고 있고, 상황은 그대로입니다.클래식 ASP 웹 서비스 문제
나는 이것에 도움이되는 자습서 덩어리를 탐색했지만, 아직 작동하지 못했습니다. 초급자로서 나는 명백한 실수를했을 수도 있지만, 나는 무엇을 모르고있다.
먼저 웹 서비스는 외부 서버에 있습니다. "Greeting"메소드에는 어떤 String을 돌려 보낼지를 결정하는 String 매개 변수가 필요합니다. 나는이 중 하나 "문자열/*"또는 "*"내용을 얻기 위해 XPath를 가정
<?xml version="1.0" encoding="utf-8" ?> <string xmlns="http://server1/Logger_WebService/">Greetings and welcome!</string>
: 여기에 "g"를 입력이 XML을 procudes?
다음, 내 웹 서비스 자체는 다음과 같습니다
<WebMethod()> _ Public Function Greeting(ByVal stringel As String) As String If stringel.ToLower = "g" Then Return "Greetings and welcome!" Else Return "Bye then!" End If End Function
웹 서비스는 일반 asp.net 솔루션에서 잘 작동합니다.
여기에 문제가 있습니다. 고전적인 ASP 코드는 다음과 같습니다. (SOAP Toolkit은 웹 서비스 서버에 설치되어 있으며 튜토리얼에서 수정 된 모든 예제가 있습니다.)
'******* USING GET METHOD Dim wsurl="http://server1/Logger_WebService/service.asmx/Greeting?g" Dim xmlhttp Set xmlhttp=Server.CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.open "GET",wsurl,false xmlhttp.send Dim rValue 'rValue=xmlhttp.responseXML.selectSingleNode("string") 'use XPATH as input argument ' or you can get response XML rValue=xmlhttp.responseXML Set xmlhttp=nothing '------------------------------------------------------ '******* USING POST METHOD Dim wsurl="http://server1/Logger_WebService/service.asmx/Greeting" Dim xmlhttp Set xmlhttp=Server.CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.open "POST",wsurl,false xmlhttp.send "stringeli=g" Dim rValue rValue=xmlhttp.responseXML.selectSingleNode("string") ' or you can get response XML ' rValue=xmlhttp.responseXML Set xmlhttp=nothing '------------------------------------------------------ Response.Write consumeWebService() Function consumeWebService() Dim webServiceUrl, httpReq, node, myXmlDoc webServiceUrl = "http://server1/Logger_WebService/service.asmx/Greeting?stringel=g" Set httpReq = Server.CreateObject("MSXML2.ServerXMLHTTP") httpReq.Open "GET", webServiceUrl, False httpReq.Send Set myXmlDoc =Server.CreateObject("MSXML.DOMDocument") myXmlDoc.load(httpReq.responseBody) Set httpReq = Nothing Set node = myXmlDoc.documentElement.selectSingleNode("string/*") consumeWebService = " " & node.text End Function '------------------------------------------------------ Response.Write(Helou()) Public Function Helou() SET objSoapClient = Server.CreateObject("MSSOAP.SoapClient") objSoapClient.ClientProperty("ServerHTTPRequest") = True ' needs to be updated with the url of your Web Service WSDL and is ' followed by the Web Service name Call objSoapClient.mssoapinit("http://server1/Logger_WebService/service.asmx?WSDL", "Service") ' use the SOAP object to call the Web Method Required Helou = objSoapClient.Greeting("g") End Function
나는 왜 아무것도 작동하지 않는지, 나는 여러 가지 다른 설정 등이로드 된 모든 방법으로 시도했다. 가능한 한 가지 문제는 웹 서비스가 ASP.Net에서 필요한 서버에 있다는 것입니다. 이 "[ServiceVariableName] .Credentials = System.Net.CredentialCache.DefaultCredentials"를 입력하십시오. 회사 네트워크 내에서이 작업을 수행하며 보안 및 권한 부여 문제가 있습니다.
실제로 사용하는 실제 방법은 정보를 데이터베이스에 삽입하기 때문에 정보를 보내고받을 수 있어야합니다. 하지만 지금은 Hello World를 작동시키는 것만으로도 충분한 도전을 제공하는 것 같습니다. :)
모든 도움을 얻으려면 Thx. 나는 체크하고 답장하기 위해 공휴일을 다시 체크하려고 노력할 것이다. 나는 의심 할 여지없이 필요한 정보를 빠뜨렸다.
바보처럼 말하십시오. 저는이 말을 처음 접했기 때문에 그렇게 잘 이해할 수 있습니다. :)
수정 사항은 대답에 숨겨져 있습니다. MSXML2.ServerXMLHTTP를 MSXML2.XMLHTTP로 변경하면 인증이 자동으로 작동합니다. – user3902302