Azure 缓存无法跨 VIP 交换保留会话状态?

2024-03-20

作为这篇文章的后续:在 Azure 云服务中启用共置会话缓存 https://stackoverflow.com/questions/20964697/enabling-co-located-session-caching-in-an-azure-cloud-service- 我尝试将会话状态存储在 Azure 缓存中,以保留 VIP 交换之间的会话。引用自答案:

为了解决这个问题,我希望您尝试新的缓存服务 (预览)。通过这种方式,您可以为您的订阅创建专用缓存 以便您可以跨云服务部署、虚拟 机器和网站。

我已设置一个 Azure 缓存(预览版)实例,在 web.config 中使用其端点和主访问密钥,并部署到我的 Azure 云服务暂存槽。

然后,我使用 Forms auth 登录,并重新部署到同一插槽。我的凭证被保留了!很高兴看到这一点。

但后来我 VIP 切换到 Production,以相同的方式登录到生产实例,重新部署到 Staging,再次切换 VIP,然后刷新,期望保持登录状态,但它不起作用 - 我的会话在两个生产中都丢失了和分期。

我已按照此处找到的说明进行操作:

http://www.windowsazure.com/en-us/manage/services/cache/net/how-to-in-role-cache/#getting-started-cache-role-instance http://www.windowsazure.com/en-us/manage/services/cache/net/how-to-in-role-cache/#getting-started-cache-role-instance

可能是什么原因造成的?没有抛出异常 - 我的访问密钥有效(通过给它一个伪造的密钥并得到异常进行测试)...我不确定发生了什么。 web.config 中的配置部分:

 <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider" xdt:Transform="Insert">
  <providers>
    <add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" applicationName="AFCacheSessionState"/>
  </providers>
</sessionState>

And:

<dataCacheClient name="default">
      <autoDiscover isEnabled="true" identifier="mysite.cache.windows.net" />
      <securityProperties mode="Message" sslEnabled="false">
        <messageSecurity authorizationInfo="{my key}" />
      </securityProperties>
    </dataCacheClient>

至于超时策略 - 我将其设置为在启用驱逐的情况下永不过期。我是少数用户之一,缓存将 cookie 存储在 128MB 的空间中,所以我认为这与过期无关。

我还注意到,在docs http://www.windowsazure.com/en-us/manage/services/cache/net/how-to-in-role-cache/#store-session,没有条目applicationName正如我上面所说的。我尝试删除它并重新测试,但无济于事 - 我的 Prod 会话在 VIP 交换时仍然丢失。

我究竟做错了什么?

Update:

来自微软:

我能够重现该问题。我正在调查。


表单身份验证不基于会话状态。它仅依赖于客户端 cookie。 Cookie 使用指定的密钥进行加密和验证web.config 的 machineKey 部分 http://msdn.microsoft.com/en-us/library/ff649308.aspx。 默认配置是:

<machineKey validationKey="AutoGenerate,IsolateApps"  
            decryptionKey="AutoGenerate,IsolateApps" 
            validation="SHA1" decryption="Auto" />

AutoGenerate意味着每台物理机都有自己的decryptionKey。生产虚拟机生成的 Cookie 不会被临时虚拟机接受。

VIP 交换后,旧生产虚拟机设置的所有 cookie 将被新生产虚拟机(前暂存虚拟机)拒绝,导致所有用户注销。

您需要显式指定 machineKey 值,以强制 Forms Auth 生成对新旧生产虚拟机都有效的 cookie(请参阅如何:配置 MachineKey,网络场部署注意事项部分 http://msdn.microsoft.com/en-us/library/ff649308.aspx).

检查此在线工具以生成 machineKey 部分:http://aspnetresources.com/tools/machineKey http://aspnetresources.com/tools/machineKey.

UPD:有相关注释管理 Windows Azure 中的部署/管理 IIS 的 ASP.NET 计算机密钥 http://msdn.microsoft.com/en-us/library/windowsazure/gg433027.aspx:

Windows Azure 自动管理 ASP.NET machineKey 使用 IIS 部署的服务。如果您经常使用 VIP Swap 部署策略,您应该手动配置 ASP.NET 机器 键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 缓存无法跨 VIP 交换保留会话状态? 的相关文章

  • Azure git 部署 - 第二个程序集中缺少引用

    我正在尝试将 Bitbucket 部署设置到 Azure 网站 我成功链接了 Bitbucket 和 Azure 但是当我推送到 Bitbucket 时 我在 Azure 站点上收到以下错误 如果我单击 查看日志 它会显示以下编译错误 D
  • 如何使用缓存快速重建dockerfile?

    我想优化我的 Dockerfile 我希望将缓存文件保留在磁盘中 但是 当我跑步的时候我发现docker build 它总是尝试从网络获取每个文件 我希望在构建期间共享我的缓存目录 例如 var cache yum x86 64 6 但是
  • mvc 4下拉默认值选择

    我想在下拉列表中选择默认值 其中policyId 7 但它没有选择该值 我做错了什么 控制器 var pm new ManagerClass IEnumerable
  • MVC 4 使用 Ajax.BeginForm() 从另一个局部视图更新局部视图

    我在其中一个页面上设置了评论部分 父视图有一个部分视图 它显示该 ID 的评论 并提供显示另一个部分视图以发布评论的选项 当有人发表评论时 我希望父级中的第一个部分视图刷新以显示新评论 目前 当您单击发表评论时 将调用 AddComment
  • 如何在MVC中获取控制器中的下拉值

    我使用递归函数使用字符串列表绑定下拉列表我的下拉菜单具有类似的值 家 首页 gt gt 厨房 首页 gt gt 厨房 gt gt ABC 我想在数据库中使用相同的下拉值 ABC 这是我的查看代码 ViewBag Title Createne
  • Azure Key Vault - 添加部署槽的访问策略

    我有一个有 2 个插槽的应用程序 我已将连接字符串存储在密钥保管库中 我已在应用程序和 2 个插槽上启用 MSI 此外 在保管库的访问策略中 我添加了应用程序 生产槽 但是我无法将插槽添加到访问策略中 例如 我的应用程序的名称是 XYZ20
  • iOS 解决方案仅当图像尚未使用 SDWebImage 缓存在内存中时才加载带有动画的图像

    我已经为这个问题苦苦挣扎了几天 以前我使用 AFNetworking 类别来加载和缓存图像 但它的回调中没有提供缓存类型 所以我过去常常在每个控制器中跟踪哪些图像已经加载 我浏览了 SDWebImage 它提供了我正在寻找的东西 SDIma
  • MVC4 输入字段占位符

    Does MVC4默认支持placeholders对于生成的输入字段 我没有找到任何东西 所以我正在尝试实现我自己的 但不幸的是Prompt E Mail 没有传递到ViewData ModelMetadata Watermark同时产生控
  • 逻辑应用的 IP 白名单

    如何将逻辑应用的 IP 地址列入白名单 由逻辑应用程序调用的服务 使用 HTTP 操作 但该服务需要白名单才能调用 那么 如何将逻辑APP列入白名单呢 我们可以使用Azure API管理进行白名单 它发布逻辑App 因为api管理提供静态I
  • Azure无法访问React Web应用程序中的env变量

    几年前我看到有一个类似的问题 但超链接答案已被微软关闭 我有一个使用 create react app 创建的 React 应用程序 它已经部署到heroku并加载一些环境变量来访问谷歌地图等 这一切对于heroku来说都工作得很好 我已经
  • 如何在 Redis 缓存中存储机器人状态

    虽然有一些文章描述了如何在 Redis 缓存中存储机器人状态 但这是推荐的方法吗 https ankitbko github io 2016 10 Microsoft Bot Framework Use Redis to store con
  • azure 和 google 上的自定义联合代理

    azure 和 google 中的 aws 上的自定义联合代理可以替代什么 在AWS中 我可以创建一个允许联合用户登录并访问这样的资源的url https docs aws amazon com IAM latest UserGuide i
  • 为什么 Firefox 会忽略缓存标头并在刷新时重新验证?

    我有一些不可变的图像资源 可以永久缓存 Chrome 似乎尊重我的响应标头 并且不会重新验证资源 以下是 Chrome 中其中一项资源的示例 正如你所看到的 我包括cache control public max age expires e
  • 使用 RSpec 进行 Rails 片段缓存测试

    我觉得这是一个没有太多记录的主题 至少我在这里找到最佳实践时遇到了很多麻烦 我使用 cache key 在视图中进行片段缓存 tbody employees each do employee cache employee do tr emp
  • 如何获取 ADLS Gen2 中存储的文件的 MD5?

    我通过 sFTP 将每日文件接收到 ADLS gen 2 存储帐户 我需要通过检查 ADLS gen2 中存储的文件的 MD5 来验证文件 我尝试使用 BLOB API 目前它不支持 ADLS gen2 如果文件存储在 Blob 存储中 我
  • 将 javascript 变量作为参数传递给 @url.Action()

    是否可以将javascript变量作为参数传递给 url Action 因为据我所知可能存在服务器和客户端问题 我的要求是我必须根据过滤器下载文件 并进行ajax调用不适用于下载文件 所以我对 url Action 进行了编码 但无法实现这
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 在 ASP.NET MVC 中设置默认 JSON 序列化器

    我正在开发一个已部分转换为 MVC 的现有应用程序 每当控制器响应 JSON ActionResult 时 枚举都会以数字形式发送 而不是字符串名称 听起来默认的序列化程序应该是 JSON Net 它应该将枚举作为其名称而不是整数表示形式发
  • Azure RM 模板。具有多个数据磁盘的多个虚拟机

    我正在尝试创建一个模板 该模板将使用复制功能部署具有可变数量的多个数据磁盘的多个虚拟机 我严格遵循文档 但我的部署仍然失败 https learn microsoft com en us azure azure resource manag
  • Azure Policy:删除资源组上的锁定

    我尝试使用 Azure Policy 检查生产订阅中的所有资源组是否都有 CanNotDelete 锁 我制定了一项政策 其灵感来自于这个问题 https stackoverflow com questions 54883610 how t

随机推荐

  • 模拟来自developer.sandbox.com的recurring_ payment_skipped IPN

    当定期付款失败时 我需要模拟 IPN 然后 我的应用程序可以创建待处理发票并将其发送给客户 我搜索并发现我需要设置将在下面处理的 IPNtxn type recurring payment skipped recurring payment
  • 验证货币输入的最佳方法?

    我创建了 TextBox 和 CompareValidator 我认为它们将允许以下形式的输入 5 5 00 5 00 不幸的是 它不允许带有美元符号的版本 如果不允许美元符号 那么对货币进行类型检查有什么意义呢 有没有办法允许这个符号
  • 如何对总和为 100% 的一组数字进行四舍五入

    今天 我的一位朋友向我展示了网站上的一个错误 Link http img594 imageshack us img594 7605 mrul png 您可以看到百分比之和为 100 1 49 20 7 10 9 7 5 5 7 100 1
  • JQuery 验证未验证

    我正在尝试使用 JQuery 验证器插件来验证 Rails 应用程序 但它既不会抛出任何错误 也不会验证任何内容 我不知道我的代码还有什么问题 任何帮助将不胜感激 document ready function theform valida
  • 如何解决“值对于 dtype('float32') 来说太大?”

    我读了很多与此类似的问题 但仍然无法弄清楚 clf DecisionTreeClassifier clf fit X train y train X to predict array 1 37097033e 002 0 00000000e
  • 是否可以有一个函数接受任意数量、任意类型的变量?

    我有一个简单的函数 它接受一个字符串并用该字符串向我发送一封电子邮件 该函数在调试实时站点时使用 public void errEmailV1 string strVars sendEmail me email emailSubject s
  • 测试控制器有意义吗

    我有一个简单的 MVC 应用程序 由视图 gt 控制器 gt 服务 gt 模型组成 我的控制器真的很瘦 他们所做的就是调用服务方法并填充 ModelAndView 对控制器进行单元测试以确保它们在完全模拟服务的同时在 ModelAndVie
  • 查询以搜索所有包中的表和/或列

    是否可以运行查询来搜索所有包以查看包中是否使用了特定的表和 或列 包太多 无法打开每个包并查找我正在寻找的值 你可以这样做 select from user source where upper text like upper SOMETE
  • 困惑:Django“无法导入app.views”但可以导入app,在WSGI中?

    我遇到了一个奇怪的 Django 问题 使用 mod wsgi 运行 Django 姜戈正在寻找urls py 然后说 ViewDoesNotExist Could not import app views Error was No mod
  • 在 .dot 树中强制执行水平节点排序

    我正在尝试使用 GraphViz 重新创建二叉搜索树的示例图 它最终应该是这样的 这是我的第一次尝试 digraph G nodesep 0 3 ranksep 0 2 margin 0 1 node shape circle edge a
  • 将值从文本文件传递到数组

    我的代码有一些问题 我的程序根据来自输入文件的三个带的颜色计算电阻值 然后打印到输出文件 输入文件示例 红 绿 蓝绿色 灰色 黄色 输出文件示例 电阻 欧姆 680电阻 千欧姆 1420 然而 每次我运行该程序时它都会崩溃 我进行了一些调试
  • ngrx 和 ngxs 之间的性能差异? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想在我的 Angular 6 应用程序中使用 ngxs 进行状态管理 但我不确定它对于大型项目是否成熟 我找不到任何有关 ngrx 和 ngx
  • 是否可以定义一个包含对象的对象?

    我有这个对象 var a 1 topicId 1 subTopicId 1 topicName x subTopicName x 2 topicId 1 subTopicId 2 topicName x subTopicName x 62
  • roc_auc_score 和plot_roc_curve 结果不同

    我正在训练一个RandomForestClassifier sklearn 预测信用卡欺诈 然后当我测试模型并检查 rocauc 分数时 我在使用时会得到不同的值roc auc score and plot roc curve roc au
  • React ApexCharts 按时间间隔更新图表

    我正在构建一个 React 应用程序 它将显示一些需要通过 api 调用不断更新的图表 使用 ApexCharts 它们将显示来自不同来源的传感器数据 我根据需要设计和配置了图表 但是如果我通过更改状态数组来更新数据setInterval表
  • AngularJs $q 承诺与 async/await 兼容吗?

    我正在使用 TypeScript 版本分别为 9 07 1 5 11 和 3 7 5 开发 Angular AngularJs 混合应用程序 我们所有的 HTTP 请求 甚至是由新的 Angular 组件发出的请求 都使用以纯 Javasc
  • 在 Clojure 中使用引用

    在 clojure 中引用会导致不评估 a and a返回相同的结果 a 和 a 之间有什么区别 一个不评估 另一个评估自身 但这与不评估相同吗 a是简写 quote a eval quote form 回报form根据定义 也就是说 如果
  • Angular 2 错误和 Typescript - 如何调试?

    我刚刚开始了一个学习 Angular2 和 Typescript Javascript 的项目 我有 Java 背景 我调试项目的方法通常是堆栈跟踪 编译错误以及 在较大的项目上 大量测试用例的组合 然而 其中大部分似乎并没有直接转化为网络
  • 如何在 C 程序中最好地实现字符串到数字的映射

    我有一组明确的字符串及其对应的数字 kill gt 1 live gt 2 half kill gt 3 dont live gt 4 列表包含 30 个这样的字符串及其数字映射 如果用户输入 kill 我需要返回1 如果他输入 dont
  • Azure 缓存无法跨 VIP 交换保留会话状态?

    作为这篇文章的后续 在 Azure 云服务中启用共置会话缓存 https stackoverflow com questions 20964697 enabling co located session caching in an azur