Веб-приложения обычно имеют клиентскую и серверную стороны, тогда как в моем конкретном сценарии у нас есть клиентская и две серверные технологии, использующие веб-службы для выполнения операций и запросов.Сессии ColdFusion и .Net
Хотя эта проблема не имеет отношения к основной проблеме, причина этого заключается в том, что наши настольные приложения используют .Net, тогда как в наших веб-приложениях используется ColdFusion, и мы медленно переходим к серверным процессам к .Net, используя веб-службы в качестве средства для выполнения этих операций, тем самым, несомненно, в ближайшем будущем значительно облегчит переход на полное решение .Net.
Проблема
Вопрос в том, когда я звоню веб-службы .Net От ColdFusion, .Net не кажется, чтобы сохранить сессию за пределами запроса HTTP.
Однако, если я вызываю тот же веб-сервис, используя Ajax с jQuery, сеанс сохраняется за пределами одного HTTP-запроса. (на всех моих страницах)
Веб-сервис зарегистрирован в функции OnApplicationStart
компонента Application.cfc
в Cold Fusion. (Примечание: SoapHeader реализует WS-Security)
<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>
При вызове же веб-службы из JQuery, заголовок и тело структурировано как таковой:
var strSoapData = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Header><LanguageHeader xmlns='http://tempuri.org/'><Locale>en-CA</Locale></LanguageHeader></soap:Header><soap:Body>" + strData + "</soap:Body></soap:Envelope>";
Для того, чтобы справиться с ws-security
в .Net следующий код помещается в web.config
файле:
<webServices>
<soapExtensionImporterTypes>
<add type="Microsoft.Web.Services3.Description.WseExtensionImporter, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</soapExtensionImporterTypes>
<soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</webServices>
Вопрос
После нескольких часов исследований и испытаний и ошибок, какой следующий шаг я могу предпринять, чтобы указать основную проблему, почему моя сессия потеряна .Net при вызове веб-службы от Cold Fusion ?
EDIT
После немного больше исследований я считаю, что Cold Fusion не сохраняя ASP.NET_SessionId
печенье, печенье, возможно, все вместе. Я попытаюсь использовать метод cookie-less и обновить свои результаты.