我基本上想要在通過ColdFusion調用SOAP Web服務時將ASP.NET_SessionId
cookie添加到我的HTTP請求標頭中。在ColdFusion中爲SOAP調用的HTTP標頭添加cookie
Web服務在ColdFusion中的Application.cfc
組件的OnApplicationStart
函數中註冊。
<cfscript>
objSoapHeader = XmlParse("<wsse:Security mustUnderstand=""true"" xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""><wsse:UsernameToken><wsse:Username>MY_USERNAME</wsse:Username><wsse:Password>MY_PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security>");
Application.UserWebService = CreateObject("webservice","MY_URL/UserService.asmx?WSDL");
addSOAPRequestHeader(Application.UserWebService,"","",objSoapHeader,true);
</cfscript>
我的Web服務被稱爲例如:
<cfset Result = "#Application.UserWebService.SomeFunction("1", "DATA")#">
爲了使.NET服務器(如Web服務的位置)記住我的會話狀態,我必須通過ASP.NET_SessionId
的cookie中HTTP請求頭,但不知道這是否甚至可以在ColdFusion中使用。
我已經研究了好幾個小時,但是到目前爲止還沒有成功,所以有人成功設法解決這個問題?
這就是你如何在cfhttp中設置cookie。 ''。但我不知道從哪裏獲取.NET值。你有沒有試過用''查看cgi範圍? –
Jules
爲了澄清,這裏的建議是嘗試使用'cfhttp'而不是'createObject()'來使用webservice。在某些情況下,它提供了更多的靈活性。請參閱此主題以瞭解有關如何提取Cookie並通過http請求維護會話的詳細信息:http://www.bennadel.com/blog/725-maintaining-sessions-across-multiple-coldfusion-cfhttp-requests.htm – Leigh
@Leigh - 他正在尋找.NET會話ID,而不是CF。但我同意你的意見。 cookie.CFID或cookie.JSESSIONID可能更好用。 – Jules