Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
ASP.NET MVC3根据ajax请求创建新会话_Asp.net_Asp.net Mvc 3_Session - Fatal编程技术网

ASP.NET MVC3根据ajax请求创建新会话

ASP.NET MVC3根据ajax请求创建新会话,asp.net,asp.net-mvc-3,session,Asp.net,Asp.net Mvc 3,Session,嗯,我最后不得不在这里创建一个帐户。多年来一直在使用它,我经常在这里找到答案,但这次没有。 事实上,我发现很多人都有类似的问题,但他们的解决方案对我都没有帮助 我已经开始了一个新的MVC3项目,所以到目前为止它非常简单。我以前做过一些,所以我有点知道我在做什么(但不太清楚,很明显,为什么会在这里;-) 我的问题显然是一个相当常见的问题:一个请求启动一个新会话,即使用户已经有了一个会话 最令人沮丧的是,它在我的托管服务上工作得非常好,但在本地主机上却坏了 我做了很多事情来解决这个问题: 我的计算

嗯,我最后不得不在这里创建一个帐户。多年来一直在使用它,我经常在这里找到答案,但这次没有。 事实上,我发现很多人都有类似的问题,但他们的解决方案对我都没有帮助

我已经开始了一个新的MVC3项目,所以到目前为止它非常简单。我以前做过一些,所以我有点知道我在做什么(但不太清楚,很明显,为什么会在这里;-)

我的问题显然是一个相当常见的问题:一个请求启动一个新会话,即使用户已经有了一个会话

最令人沮丧的是,它在我的托管服务上工作得非常好,但在本地主机上却坏了

我做了很多事情来解决这个问题:

  • 我的计算机名称中没有下划线
  • 会话包含自定义数据(该错误仅在用户登录后发生)
  • 我已将以下内容添加到web.config(hmpf,我猜您必须假设gt/lt字符):
http协议 自定义标题 清楚的/ add name=“访问控制允许原点”值=“*”/ /自定义标题 /http协议
  • 这也是:

    modules runAllManagedModulesForAllRequests="false"/ 模块runAllManagedModulesForAllRequests=“false”/
  • 在InProc sessionstate中,我尝试了“无cookieless”的正确和错误

  • 我的主机文件不包含任何关于本地主机的内容
嗯,看看这张单子,我肯定漏掉了一些。有些人也是故意的,因为他们是绝望的(是的,甚至比上面提到的还要绝望),是从绝望中生出来的

如前所述,这在我的主机上运行时特别令人不安-在开发服务器(VS2010)上是否需要调整一些配置设置

我一直在这样一个前提下工作,即问题是由于跨域安全(它认为我来自另一个域)

此请求失败:

url: 'http://localhost:50396/moody/changeBuilding/' + elem.selectedIndex, 网址:'http://localhost:50396/moody/changeBuilding/“+elem.selectedIndex, 它是我在jQuery.ajax函数中使用的选项数组的一部分

我在上传到主机时更改了域,但只有localhost:port部分,应用程序中的其他所有内容都是相同的

这两天来,我一直在为这件事绞尽脑汁,我会错过考试的:-( 不过我决定把它埋在6英尺深的地下


如果您有任何建议,我将不胜感激。

您是否尝试过使用类似的方法来确保会话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,