ASP.NET MVC 5 中使用Frameset中Session、Cookie值消失的问题完整解决方案

前言

最近这段时间在做一个项目,由于赶时间,我先完成其他的,对于相对麻烦的,就放到最后来完成。所有的事都完成了,但却有一个比较麻烦的事还一直没解决。就是在ASP.NET MVC 5中所使用的Session和Cookie。登录时赋值,然后在其他地方根本无法读取值,读出来的值全是空的。查遍所有网上资料,没有一个解决的。

下面列举网络资料解决方案:

只需要设置 P3P HTTP Header,基本百分之九十五以上相似。具体请参照:simenpeng的专栏的解决方案。也是网上大部分提供的解决方案,写得相对全。可能是我的环境因素有区别。对于博主的文章,肯定帮了不少人,必须值得肯定。下面介绍一下我碰到问题的解决方案。


环境:

1、硬件环境:Think Pad笔记本(几台,都差不多配置)

2、软件环境:Microsoft Visual Studio Ultimate 2013+ASP.NET MVC 5+Bootstrap-3.0.0 +JQuery-3.1.1+EasyUI 1.5.1+SignalR-2.1.2


原码

<!DOCTYPE html>
<html>
    <frameset rows="10%,90%" border="0px">
        <frame src="Header" noresize="noresize">
            <frameset cols="12%,88%" border="1px">
                <frame src="Menus" id="menus">
                <frame src="Desktop" id="main">
            </frameset>
    </frameset>
</html>


经过各种各样的网络资料,包括官方的示例程序,结果都无法在其他地方获得Session和Cookie的值。

于是,用了三天左右的时间,专门研究所有涉及Session的类、方法、属性和配置文件,基本全试验了一遍。终于找到一个满意的解决方案:


解决方案

在Web.config文件中加入如下代码才完整解决

<system.webServer>
    <modules>
      <remove name="Session"/>
      <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
    </modules>
  </system.webServer>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `frameset` 标签是 HTML 用于创建框架布局的标签。它可以用来定义整个页面的布局,每个框架都可以加载一个独立的 HTML 文件。使用方法如下: ``` <frameset cols="25%,50%,25%"> <frame src="frame_a.html"> <frame src="frame_b.html"> <frame src="frame_c.html"> </frameset> ``` 其 `cols` 属性指定每个框架占整个页面的宽度比例,可以用百分比或像素表示。同样的,还有一个 `rows` 属性,可以指定每个框架占整个页面的高度比例。 需要注意的是,目前大多数网站已经不再使用 `frameset` 标签,因为它存在一些限制,如:不利于搜索引擎优化,不利于响应式设计等。相比之下,更推荐使用 CSS 布局。 ### 回答2: HTMLFrameset标签是用来创建网页框架的标签,它允许在一个页面划分出多个独立的区域,每个区域可以分别载入不同的网页。Frameset标签通常与Frame标签一起使用,Frame标签用来定义每个区域载入的网页内容。Frameset标签可以实现网页的多窗口显示,提升页面的用户体验。 Frameset标签的基本语法如下: ``` <frameset cols="*,*" rows="*,*"> <frame src="page1.html"> <frame src="page2.html"> <frame src="page3.html"> <frame src="page4.html"> </frameset> ``` 其,Cols和Rows属性用于定义Frameset标签划分成的区域的大小和数量,可以指定百分比或固定像素。Cols表示水平方向上的分割线数量和位置,Rows表示垂直方向上的分割线数量和位置。上面的代码Frameset被分成了4个区域,第一行两个区域,第二行也是两个区域。每个Frame标签的Src属性指向不同的网页,表示每个区域所要载入的内容。 在使用Frameset标签时,需要注意以下几点: 1. Frameset标签必须包含在HTML文档的<body>标签,而且只能是<body>标签的第一个元素。 2. Frameset标签不能同时与<head>或<body>标签一起使用,否则会导致页面无法正常显示。 3. Frameset标签不能与其他类似的页面布局标签一起使用,例如<table>或<div>,否则会出现布局冲突的情况。 4. 当网页含有Frameset标签时,搜索引擎可能无法正确地索引页面内容,因此Frameset标签在现代网页设计已经不再常用。 总之,Frameset标签在过去被广泛使用,它为网页提供了多窗口显示的功能,提升了页面的交互性和用户体验。但是,由于其一些弊端,现在还有更好的技术可供选择,使得网页视图的划分成为更加简单和灵活。 ### 回答3: HTMLframeset标签是用来创建基于框架的Web页面的一种方式。当你使用frameset标签时,你可以将一个页面分成几个部分,每个部分都是单独的页面。这种技术被称为框架网页设计。 在创建框架网页时,需要使用两个标签:frameset和frame。Frameset标签定义了页面的框架区域,而frame标签指定了每个框架要加载的不同HTML文档。frame标签通常嵌套在frameset标签内。 在使用frameset标签时,需要注意以下几点: 1. Frameset标签必须在HTML文档的顶部位置。 2. Frameset标签必须包含一个或多个frame标签,以指定将要加载的文档。frameset标签的属性可以在HTML文档设置,这些属性包括:cols,rows等。 3. Frameset标签可以有多个frame标签,每个frame标签指定一个屏幕区域,以便将内容作为单独的页面来加载。 4. 如果希望在不同框架之间传递信息,则必须使用JavaScript或cookie等技术实现。 尽管HTML框架的使用在过去十年已经逐渐减少,但是它仍然是一种实现特殊需求的有效方式。例如,在Web应用程序使用框架非常普遍,因为这种技术可以让用户通过单个页面访问许多不同的应用程序模块。但与此同时,框架网页的缺点是它的SEO被搜索引擎忽略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值