Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在Web服务中使用会话状态保留通过AJAX发送的数据,而不使用代理_Vb.net_Web Services_Jquery_Asmx_Session State - Fatal编程技术网

Vb.net 在Web服务中使用会话状态保留通过AJAX发送的数据,而不使用代理

Vb.net 在Web服务中使用会话状态保留通过AJAX发送的数据,而不使用代理,vb.net,web-services,jquery,asmx,session-state,Vb.net,Web Services,Jquery,Asmx,Session State,我有一个web服务,我正试图使用它创建一个购物车。数据保存在显示它的网站的单独域中 我已按以下方式设置该服务: <System.Web.Script.Services.ScriptService()> _ <System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ <System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.

我有一个web服务,我正试图使用它创建一个购物车。数据保存在显示它的网站的单独域中

我已按以下方式设置该服务:

<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class shoppingCart
    Inherits System.Web.Services.WebService

    <WebMethod(True)> _
    Public Function addToCart(itemId, qty, singlePrice, singleWeight, isBulk, apiKey)
        ''' do stuff
         Dim shoppingCart = Session("hgPublicCart")
         if shoppingCart is nothing then 
               '' make shopping cart
         else
               '' add to shopping cart
         end if
         return shoppingCart
    End Function
我能够成功单击“立即购买”按钮,将商品信息发送到web服务,并创建一个新的购物车,然后通过远程服务器上的数据将其返回到浏览器,并相应地更新我的页面

然而。。。然后,如果我尝试“购买”第二个项目以添加到购物车中,它作为远程服务器上的会话变量保存,我只需创建另一个新项目,我的购物车中的前一个项目就会丢失

我可以理解为什么会发生这种情况,我想,在AJAX调用中没有维护会话ID,但是我不知道如何修复它

本页:

这是Google上最有用的链接,但它没有使用AJAX post,也就是说,它不是一个到远程服务器的完全客户端post,而是在客户端服务器上创建一个会话/cookie。不管怎样,我可能不得不这样做,但如果有人能为我指明在远程服务器上使用会话状态的示例代码的方向,那就太好了

我不想使用Javascript Cookies


编辑:请注意,我知道这在在ASP.NET(和iis)中保持会话状态是正确配置客户端和服务器所必需的。客户端标识可以通过每个会话cookie(在每个请求中发送)完成,也可以是无cookie的,并且标识是URL的一部分,例如:

http://localhost/(lit3py55t21z5v55vlm25s55)/Application/SessionState.aspx

所以,如果您想避免cookies,就必须配置服务器(web.config-请参阅本文)并维护正确的URL。对我来说,cookies似乎更简单。

ASMX是一项遗留技术,不应用于新的开发。WCF应用于web服务客户端和服务器的所有新开发。一个提示:微软已经退出了MSDN上的。感谢@JohnSaunders将所有内容移动到WDF来帮助解决这个问题的信息?我不知道。然而,它将阻止你故意使用过时的工具使事情变得更糟。
http://localhost/(lit3py55t21z5v55vlm25s55)/Application/SessionState.aspx