Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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/3/sockets/2.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 URL中模式设置为“的会话ID”;SQLServer";_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Forms Authentication_Session State - Fatal编程技术网

Asp.net URL中模式设置为“的会话ID”;SQLServer";

Asp.net URL中模式设置为“的会话ID”;SQLServer";,asp.net,asp.net-mvc,asp.net-mvc-4,forms-authentication,session-state,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Forms Authentication,Session State,我正在开发一个ASP.NETMVC4应用程序,它使用Webmatrix进行身份验证。我的web.config文件中有以下内容 <sessionState mode="SQLServer" cookieless="true" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist S

我正在开发一个ASP.NETMVC4应用程序,它使用Webmatrix进行身份验证。我的web.config文件中有以下内容

<sessionState mode="SQLServer" cookieless="true" allowCustomSqlDatabase="true"
     sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist
                          Security Info=True;User ID=user;Password=password" 
     timeout="2880" sqlCommandTimeout="10" />

我可以看到正在填充ASPState数据库,但我仍然在URL中获取会话id。当我尝试通过Chrome访问它时,它会出错,并告诉我许多重定向。当我通过IE访问它时,即使我看到它重定向(尽管会话id在url中),它仍然工作,但在我尝试登录时出现错误,错误如下:

无法序列化会话状态。在“StateServer”和“SQLServer”模式下, ASP.NET将序列化会话状态对象, 因此,不可序列化对象或MarshalByRef对象是 不允许。如果存在类似的序列化,则同样的限制也适用 由自定义会话状态存储在“自定义”模式下完成


我没有对Webmatrix进行任何自定义,这都是默认设置。我需要会话id远离URL并使用DB,就像我在
web.config
文件中设置的那样。首先,尝试将cookieless设置为false。第二,当使用ASPState时,allowCustomSqlDatabase应设置为false,第三,不要在连接字符串中指定初始目录。SQLState将在后台自动执行此操作。第四,我不知道您试图序列化的是什么,但是您应该将
[Serializable]
属性放在您试图存储在会话中的类之上


至于URL字符串中的会话id,您使用的是IIS还是IIS Express?IIS使用一个小实用程序
aspnet\u filter.exe
接受带有会话id的URL,并在内部将您重定向到正确的地址。当它将信息返回给您时也是如此。URL再次经过修饰过程。但是,我不确定IIS Express是否使用该实用程序。在某种程度上,在开发人员机器上关闭Cookie并没有太大意义。

此消息告诉您,您尝试添加无法序列化的会话类-例如,无法在会话上保存字典,或者使用可能不使用[Serialization]的类的其他列表关键字.+1,用于深入了解aspnet_filter.exe。我在寻找IIS是否将每个包含会话ID的url视为不同的url。谢谢