ASP.NET MVC3根据ajax请求创建新会话
嗯,我最后不得不在这里创建一个帐户。多年来一直在使用它,我经常在这里找到答案,但这次没有。 事实上,我发现很多人都有类似的问题,但他们的解决方案对我都没有帮助 我已经开始了一个新的MVC3项目,所以到目前为止它非常简单。我以前做过一些,所以我有点知道我在做什么(但不太清楚,很明显,为什么会在这里;-) 我的问题显然是一个相当常见的问题:一个请求启动一个新会话,即使用户已经有了一个会话 最令人沮丧的是,它在我的托管服务上工作得非常好,但在本地主机上却坏了 我做了很多事情来解决这个问题:ASP.NET MVC3根据ajax请求创建新会话,asp.net,asp.net-mvc-3,session,Asp.net,Asp.net Mvc 3,Session,嗯,我最后不得不在这里创建一个帐户。多年来一直在使用它,我经常在这里找到答案,但这次没有。 事实上,我发现很多人都有类似的问题,但他们的解决方案对我都没有帮助 我已经开始了一个新的MVC3项目,所以到目前为止它非常简单。我以前做过一些,所以我有点知道我在做什么(但不太清楚,很明显,为什么会在这里;-) 我的问题显然是一个相当常见的问题:一个请求启动一个新会话,即使用户已经有了一个会话 最令人沮丧的是,它在我的托管服务上工作得非常好,但在本地主机上却坏了 我做了很多事情来解决这个问题: 我的计算
- 我的计算机名称中没有下划线
- 会话包含自定义数据(该错误仅在用户登录后发生)
- 我已将以下内容添加到web.config(hmpf,我猜您必须假设gt/lt字符):
- 这也是: modules runAllManagedModulesForAllRequests="false"/ 模块runAllManagedModulesForAllRequests=“false”/
- 在InProc sessionstate中,我尝试了“无cookieless”的正确和错误
- 我的主机文件不包含任何关于本地主机的内容李>
如果您有任何建议,我将不胜感激。您是否尝试过使用类似的方法来确保会话cookie在AJAX请求中发送。如果域相同但正在检查工作,则应该发送会话cookie 编辑:这篇关于更改端口的文章也值得一读 编辑:根据Charlino评论中的新信息(以及其中进行的sterling侦探工作)如果问题只出现在您的本地开发人员计算机上,那么解决localhost/127.0.0.1问题的最简单方法是手动将浏览器url从127.0.0.1:50396更改为localhost:50396,然后再次登录以获取新cookie,这样就可以了 我在上传到主机时更改了域,但只有localhost:port部分,应用程序中的其他所有内容都是相同的 阅读上面的内容,我认为会话cookie没有被发送,因为您正在更改域 让我们坐下来思考会话是如何工作的。基本上,ASP.NET包含会话及其数据的集合。当每个请求传入时,ASP.NET必须将该请求映射到现有会话或为其创建新会话 那么ASP.NET如何知道每个传入请求所属的会话?或者知道它需要创建一个新的请求?知道这一点的唯一方法是,如果请求包含一些信息,即一个“键”,它告诉ASP.NET给请求的会话是什么…或者在没有这个“键”的情况下,创建一个新会话 请求如何通过cookies发送此“密钥”
因此,如果您更改域,将不会发送Cookie…因此,ASP.NET将为请求创建一个新会话。是的,我一直在广泛使用fiddler。我发送的请求如下所示:GET HTTP/1.1主机:127.0.0.1:50396用户代理:Mozilla/5.0(Windows NT 6.0;WOW64)AppleWebKit/534.57.2(KHTML,像Gecko)Version/5.1.7 Safari/534.57.2 Accept:application/xml,text/xml,/;q=0.01来源:Referer:Accept语言:da-DK Accept编码:gzip,deflate连接:keep-alive连接:keep-alive
当然,这意味着我的选项数组url看起来真的像……如下:[续]url:''+elem.selectedIndex,很抱歉出现了文字墙,但我真的不知道如何换行,也不知道为什么stackoverflow会让我们忍受这个可怕的评论系统。将浏览器url从127.0.0.1:50396更改为localhost:50396--我尝试过了,但没有效果。键入'localhost:50396','127.0.0.1:50396'和'ivp4.fi'ddler'产生相同的响应。cookie就在那里。我可以在safari的开发面板中看到它。但是它确实写了一个以前没有的错误:XMLHttpRequest无法加载。访问控制不允许使用Origin允许Origin。我认为这很奇怪,因为我应该允许所有人和-东西访问(根据我的问题).主机名和ip地址之间的Cookie不共享。例如,
http://localhost:50396
不与http://127.0.0.1:50396
…因此,他们不共享会话。好吧,那么,我还是需要对我的主机文件做些什么?我尝试了一两件事,但都没有用。请您详细说明一下?Pos兄弟姐妹。不过,首先,为什么您需要在这两种方法之间进行更改?您不能只使用一种方法吗?我不能在主机上调试,如果“localhost”不起作用,我也不能在家中调试。感谢您花时间!:-)
url: 'http://localhost:50396/moody/changeBuilding/' + elem.selectedIndex,