首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我如何在http和https之间共享一个asp.net会话

在ASP.NET中,HTTP和HTTPS之间共享会话需要采用一种称为“跨协议会话”的方法。以下是实现这一目标的步骤:

  1. 确保在Web.config文件中启用了会话状态。
代码语言:xml<configuration>
复制
 <system.web>
   <sessionState mode="InProc" cookieless="false" timeout="20" />
  </system.web>
</configuration>
  1. 在Global.asax文件中,创建一个名为Session_Start的事件处理程序。
代码语言:csharp
复制
protected void Session_Start(object sender, EventArgs e)
{
    // 在此处理跨协议会话的逻辑
}
  1. 在Session_Start事件处理程序中,检查请求是否来自HTTPS。如果是,则将会话状态存储在一个全局变量中。
代码语言:csharp
复制
protected void Session_Start(object sender, EventArgs e)
{
    if (Request.IsSecureConnection)
    {
        HttpContext.Current.Application["SecureSession_" + Session.SessionID] = Session;
    }
}
  1. 在Global.asax文件中,创建一个名为Application_BeginRequest的事件处理程序。
代码语言:csharp
复制
protected void Application_BeginRequest(object sender, EventArgs e)
{
    // 在此处理跨协议会话的逻辑
}
  1. 在Application_BeginRequest事件处理程序中,检查请求是否来自HTTP。如果是,则从全局变量中检索会话状态并将其分配给当前请求的会话。
代码语言:csharp
复制
protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (!Request.IsSecureConnection)
    {
        HttpSessionState secureSession = HttpContext.Current.Application["SecureSession_" + Session.SessionID] as HttpSessionState;
        if (secureSession != null)
        {
            Session.Clear();
            Session.Add("SecureSessionData", secureSession);
        }
    }
}

通过以上步骤,您可以在ASP.NET应用程序中实现HTTP和HTTPS之间的会话共享。请注意,这种方法可能会带来一些安全风险,因此在实施之前,请确保充分了解这些风险并采取适当的安全措施。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《WCF技术剖析(卷1)》(修订版)目录

第1章 WCF简介 (WCF Overview) 1.1 SOA的基本概念设计思想 1.2 WCF是对现有Windows平台下分布式通信技术的整合 1.3 构建一个简单的WCF应用 1.3.1 步骤一...HTTP/HTTPS 2.1.2. NET.TCP 2.1.3. Net.Pipe 2.1.4. Net.Msmq 2.2. EndpointAddress 2.4.1....端口共享 2.3.1. 端口共享在WCF中的意义何在? 2.3.2. 基于HTTP|HTTPS的端口共享 2.3.3. 基于TCP的端口共享 2.4. 逻辑地址与物理地址 2.4.1....ASP.NET兼容模式 7.4.5. 非HTTP协议寄宿 7.5. Windows 服务寄宿(S708) 第8章 客户端 (Client) 8.1. 一个精简版的WCF框架 8.1.1....从透明代理真实代理说起 8.1.2. 服务代理的真实代理是什么? 8.1.3. 服务调用的大致流程 8.1.4. 实例演示:创建一个WCF框架模拟程序 8.2.

1.1K80

2019-2-13-wcf入门(15)

-12-wcf入门(14) - huangtengxiao用到的可靠会话配置),消息编码方式(文本编码,二进制编码),底层传输方法(tcp)。...作为入门教程,这里主要介绍下有哪些常见的系统的绑定,以及其支持的功能适用场景。...此绑定使用 HTTP 作为传输协议,并使用文本/XML 作为默认的消息编码。...WSHttpBinding:一个安全且可互操作的绑定,适合于非双工服务约定,支持会话,可靠会话 NetNamedPipeBinding:一个安全、可靠且经过优化的绑定,适用于 WCF 应用程序之间本机的通信...,支持会话 NetMsmqBinding: 一个排队绑定,适用于 WCF 应用程序之间的跨计算机间的通信,支持会话, 非双工 NetTcpBinding: 一个安全且经过优化的绑定,适用于 WCF 应用程序之间跨计算机的通信

35330
  • ASP.NET Core 基础知识】--依赖注入(DI)--生命周期作用域

    会话相关的数据: 如果数据与用户会话相关联,那么每次会话都应该有一个新的实例。 **临时数据处理:**处理临时数据或中间数据的对象通常不需要与其他对象共享状态,因此适合使用瞬时模式。...会话作用域: 用于存储与用户会话相关的数据,如用户首选项、购物车信息等。 适用于需要在多个请求之间保持状态的组件。...单例模式它适用于需要全局访问的组件资源共享的情况。然而,在使用单例模式时,也需要注意它的局限性潜在问题,可测试性差、设计局限性、全局状态并发问题等。...作用域(Scoped):如果服务实例的状态需要在多个请求之间共享,例如在同一个会话(Session)中,那么使用Scoped生命周期。...作用域(Scoped)服务在ASP.NET Core中有特殊的行为,它实际上是Request Scope(请求作用域),在每个Http请求期间创建新实例并重复使用,请求结束后销毁。

    15000

    分布式中使用Redis实现Session共享(二)

    阅读目录 Session实现原理 session共享实现方案 问题拓展 总结 回到顶部 Session实现原理   sessioncookie是我们做web开发中常用到的两个对象,它们之间会不会有联系呢...  Cookie写入浏览器的过程:我们可以使用如下代码在Asp.net项目中写一个Cookie 并发送到客户端的浏览器(为了简单没有设置其它属性)。...HTTP协议是无状态的,对于一个浏览器发出的多次请求,WEB服务器无法区分 是不是来源于同一个浏览器。...IsapiRuntime会首先创建一个IsapiWorkerRequest对象,用于封装当前的HTTP请求,并将该IsapiWorkerRequest对象传递给ASP.NET运行时:HttpRuntime...,从此时起,HTTP请求正式进入了ASP.NET管道。

    1.7K60

    fiddler2抓包工具使用图文教程

    图一:设置浏览器代理 2、使用fiddler捕获HTTPS会话: 默认情况下,fiddler是不会捕获https会话的,所以需要自行设置一下。...图二:设置可以捕获HTTPS会话 3、fiddler主界面介绍: 启动fiddler,我们就会看到该软件的主界面,软件窗口大体可以分为六大部分:菜单栏、工具栏、会话列表、命令行工具栏、HTTP Request...图三:fiddler主界面图 4、查看HTTP统计视图: 通常fiddler会话列表中会显示捕获的所有的http通信量,并以列表的形式展示出来,点击你想查看的一个或者多个会话,再点击软件右边的【统计】...图十一:被找出的会话用黄色标注出来了   11、如何在VS调试网站的时候使用Fiddler: 如果你想在用visual stuido 开发ASP.NET网站的时候也用Fiddler来分析HTTP, 但是默认的...例如:原本ASP.NET的地址是 http://localhost:2391/Default.aspx, 加个点号后,变成http://localhost.:2391/Default.aspx 之后就可以被

    3.6K60

    通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行

    LoadControl 输出缓存 极少有不使用用户控件的 ASP.NET 应用程序。在出现母版页之前,开发人员使用用户控件来提取公用内容,页眉页脚。...一个团队成员编写了一个诊断工具,用来将每个 HTTP 请求和响应的关键要素(包括 Cookie 标头)记录到日志中。...• Http.sys 在后续的请求中返回缓存响应,误将其他用户连接到会话。 故事的寓意又是什么呢?会话状态内核模式输出缓存不能混合使用。...即使 ASP.NET 2.0 视图状态大致是 ASP.NET 1 x 视图状态的一半大小,一个糟糕的 GridView 也可以容易地将浏览器 Web 服务器之间的连接的有效带宽减少 50% 或更多。...• 默认情况下,ASP.NET 会话状态管理器对每个请求中的会话数据存储执行两个访问(一个读取访问一个写入访问),而不管请求的页是否使用会话状态。

    3.5K80

    ASP.NET Core 6框架揭秘实例演示:利用Session保留语境

    会话的目的就是在同一个客户端和服务器之间建立两者交谈的语境或者上下文,ASP.NET Core利用一个名为SessionMiddleware的中间件实现了会话。...本篇提供了几个简单的实例来演示如何在一个ASP.NET Core应用中利用会话来存储用户的状态。(本文提供的示例演示已经同步到《ASP.NET Core 6框架揭秘-实例演示版》)。...[S2301]设置提取会话状态(源代码) [S2302]查看存储的会话状态(源代码) [S2303] 查看Cookie(源代码) [S2301]设置提取会话状态 每个会话都有一个被称为Session...下面我们利用一个简单的实例来演示会话状态的读写。ASP.NET应用在默认情况下会利用分布式缓存来存储会话状态。...当我们使用同一个浏览器访问目标站点时,发送的请求将以如下形式附加上这个Cookie。 GET http://localhost:5000/ HTTP/1.1 ...

    72210

    ASP.NET Core 因为 Nginx 配置 Connection 为 Upgrade 导致 Kestrel 返回 400 错误

    今天遇到了一个坑,的服务器在经过了 Nginx 之后,发送的 POST 请求,如果请求里面有 Body 内容,那么 Kestrel 将会返回 400 错误,同时也不会经过任何的中间件 在 HTTP...由客户端发起给服务端询问可以服务器端选择是否要升级到新协议,这个机制可以做到客户端使用HTTP/1.1去连接服务器端,询问服务器端是否能升级到HTTP2甚至是WebSockets协议。...最近有一个 PR 是允许忽略掉加上 upgrade 在 POST 带上 Body 的逻辑合入到 dotnet core 2.1 dotnet core 3.1 dotnet 5.0 版本,也许在你看到这个博客的时候...{ "~*Upgrade" $http_connection; default keep-alive; } 特别感谢 lsj 的协助,以及运维小伟大佬的方法 而我现在还有一个问题,可以如何在遇到这样的问题的时候...如果你想持续阅读的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注的主页 本作品采用 知识共享署名-非商业性使用-相同方式共享

    1.4K10

    WCF技术剖析(卷1)之目录

    构建一个简单的WCF应用            步骤一:构建整个解决方案            步骤二:创建服务契约            步骤三:创建服务            步骤四:通过自我寄宿的方式寄宿服务...(Port Sharing)            2.2.1  端口共享在WCF中的意义何在?           ...2.2.2  基于HTTP|HTTPS的端口共享            2.2.3  基于TCP的端口共享        2.3  WCF寻址(Addressing)详解            2.3.1...自定义ServiceHost     7.4  通过IIS进行服务寄宿            7.4.1  案例演示7-2:如何通过IIS进行服务寄宿            7.4.2  IIS管道与ASP.NET...架构            7.4.3  IIS服务寄宿实现详解            7.4.4  案例演示7-3:利用ASP.NET兼容模式创建支持会话(Session)的WCF服务

    94290

    C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

    发送跨域请求时,并且请求中包含了一些非简单的内容(自定义的请求头、非标准的 HTTP 方法等),浏览器会先发送一个 CORS 预检请求。...2、Session概念: Session 表示用户的会话状态。每个用户都有一个独立的 Session,用于存储用户特定的信息。用途: 用于在用户请求之间保持状态,存储用户登录信息、购物车内容等。...;3、Session 对象Session 对象用于在服务器上存储用户特定的会话数据。每个用户都有自己的 Session,可以在会话之间存储检索数据。...Server.Transfer("NewPage.aspx");这六个对象在 ASP.NET 中扮演着关键的角色,用于处理请求、生成响应、存储会话数据、共享应用程序数据等。...ViewState 是 ASP.NET Web Forms 中的一个机制,用于在 Web 页面的请求之间保持页面的状态。

    21010

    ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明

    不清楚 Asp.Net Core 请求管道、中间件的读者,对这一部分的内容可以参考 https://www.cnblogs.com/stulzq/p/7760648.html https://www.cnblogs.com.../JNLightGade/p/5737485.html 常见中间件顺序 异常/错误处理 HTTP 严格传输安全协议 HTTPS 重定向 静态文件服务器 Cookie 策略实施 身份验证 会话 MVC 你可以添加其它参数...://www.cnblogs.com/watermoon2/p/5075002.html Properties 获取可用于在中间件之间共享数据的 键/值 集合Properties 是类型为 IDictionary...) 建立此应用程序使用的委托来处理HTTP请求Build 是一个 AspNetCore.Http.RequestDelegate 类型的委托 New() 创建一个 IApplicationBuilder...它注册了一个方法工厂,为每个请求创建 BrowserLinkMiddleware。笔者注:浏览器链接是Visual Studio中的一项功能,可在开发环境一个或多个Web浏览器之间创建通信通道。

    3.5K20

    如何将.NET项目迁移到.NET Core

    Core 中MVC Web API 直接或间接继承同一个基类 ControllerBase,提供可使用的API也一致化 b) 比如:旧ASP.NET时代,写全局filter需要针对MVC Web API...;.netCore;FX(.NetFrameWork)之间引用关系 在 .NET Standard 2.0中,我们使在 .NET Standard 库中通过一个兼容层去引用已有的 .NET Framework...r=SearchResults 获取ASP.NET Core中的Web根路径内容根路径(移除的MapPath) 地址:http://beidouxun.com/Articles/Details/419f4786...-679c-4316-b2bb-baea26c94205 为什么会话状态在ASP.NET Core中不工作了?...(GDPR,即General Data Protection Regulation,《通用数据保护条例》) 在ASP.NET4.5ASP.NET Core中共享cookies认证信息(加解密方式不一致问题

    1.8K40

    金三银四面试:ASP.NET Core面试题汇总

    金三银四面试准备,奉上第三弹ASP.NET Core面试题汇总。先出题大家试答一下,然后再看后面的答案。希望对大家面试有所帮助。 1.如何在controller中注入service?...比如A调用B,而B实现了接口C,那么在A里面用C定义一个变量D,这个变量的实例不在A里面创建,而是通过A的上下文来获取。这样做的好处就是将类AB分开了,他们之间靠接口C来联系,从而实现对接口编程。...HTTPS 重定向中间件 (UseHttpsRedirection) 将 HTTP 请求重定向到 HTTPS。 静态文件中间件 (UseStaticFiles) 返回静态文件,并简化进一步请求处理。...会话中间件 (UseSession) 建立维护会话状态。如果应用使用会话状态,请在 Cookie 策略中间件之后 MVC 中间件之前调用会话中间件。...异常/错误处理 HTTP 严格传输安全协议 HTTPS 重定向 静态文件服务器 Cookie 策略实施 路由 身份验证 会话 MVC 15.application builder的userun方法有什么区别

    18510

    Asp.net管道模型(管线模型)之一发不可收拾

    前言                                   为什么我会起这样的一个标题,其实原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料...xIIS7.x的区别 Asp.net管道模型                           参考:ASP.NET使用管道模型(PipleLines)处理HTTP请求 HttpRuntime的认识与加深理解...进程的子进程与进程的线程                   参考:百度问答 拿Windows举例子吧, 因为Linux的内核好像是没有线程概念的.进程线程的区别在于粒度不同, 进程之间的变量.../article/details/2425420中周公的回答 进程:属于操作系统上的概念,一个进程占有一个内存地址,是应用程序与应用程序之间的边界,进程之间不能共享代码和数据空间(也就是不能直接交互...而工作进程通过named pipe同步请求web server的信息(调用Server对象获取服务器信息)。 ? 图依然秉承着很丑但很有用的原则,嘻嘻!!

    2.3K90

    【译】在ASP.NetIIS中删除不必要的HTTP响应头

    好吧,同意100字节单独来说并不是一个很大的数字,但在传输成千上万次时,这些信息也不可小觑。...观察Web服务器的HTTP响应头      为了看到从服务器浏览器之间通信的HTTP头,你需要在浏览器安装一些插件.比如说Fiddler就是一个微软发布的免费的用于记录HTTP日志的软件。...使用Fiddler,找一个使用IISAsp.net的Web服务器,比如微软asp.net官方网站,通常在默认情况下,HTTP响应头会包含3个Web服务器的自身识别头....("Server");    Howard von Rooijen的文章更深层次的论述了如何在IIS7整合管道模式中移除Server Http头,更多细节,请查看:Cloaking your ASP.NET...MVC Web Application on IIS 7 小结     移除服务器自身识别响应头会有如下好处: 这降低了服务器浏览器之间所需传输的数据量 使黑客攻击服务器变得更加困难,从而使服务器更加强壮

    3K10

    神秘APT组织锁定(IIS)Web服务器,擅长规避恶意软件检测

    例如,即使新版本的ASP.NET支持 VIEWSTATE 完整性检查和加密,但如果加密验证密钥被盗或泄露,它们也可被用于重新感染服务器或感染同一集群中托管同一应用程序的其他服务器,因为密钥是共享的。...ASP.NET允许应用程序将用户会话作为序列化对象存储在MSSQL数据库中,然后为它们分配唯一的cookie。...另一个称为“Forward.dll”,可以实现HTTP流量转发功能。...验证ASP.NET VIEWSTATE的使用或相同机制的自定义实现( Checkbox Survey中的压缩 VSTATE)对于保护ASP.NET应用程序免受VIEWSTATE反序列化漏洞影响至关重要...尽可能在不同的IIS服务器/Web应用程序之间分离会话状态MSSQL数据库,或者使用适当的最小CRUD权限创建不同的SQL用户。

    1.7K40

    使用分布式缓存对ASP.Net Core性能提升?

    ASP.NET Core由于其更整洁、更轻的架构跨平台的支持而开始流行于开发web应用程序。还有很多这样的ASP.NET Core应用程序是高流量的,并且在负载均衡的多服务器部署中运行。...NCache也是一个非常快速可扩展的内存分布式存储用来存储ASP.NET Core Session(会话)。...ASP.NET Core Session会话,这非常重要,因为您不能在运行时丢失任何会话。 下面是一个图表,展示了像NCache这样的分布式缓存如何适合您的应用程序部署。 ?...在分布式缓存中存储ASP.NET Core Session(会话) 有两种方法可以使用NCache作为ASP.NET Core会话存储。...下面是如何在StartUp启动类中配置它。 ? 你可以像下面图这样在( appsettings.json)中指定配置 ? NCache为甚么是一个比Redis更好的选择?

    1.7K10
    领券