Silverlight 是否缓存 Web 服务调用?

2023-12-10

这是问题所在:

我的 Silverlight 应用程序正在使用 WebClient 调用名为 getCampaigns 的 HTTP Web 服务,该服务返回 Campaign 对象的 JSON 数据数组。然后,用户可以与请求的对象进行交互,修改它们、删除它们等。当用户删除活动时,Silverlight 会调用另一个 Web 服务,该服务会在数据库中标记该对象,以便将来不会返回该对象,并且然后通过调用 getCampaigns 刷新页面。问题是已删除的活动仍然显示。

如果我检查数据库,该活动确实已被禁用,如果我关闭 Silverlight 应用程序并重新启动它,则该活动不会出现。 Silverlight 似乎正在缓存 Web 服务调用。但每次调用时都会实例化一个新的 WebClient 对象。

有任何想法吗?


Silverlight 中的任何 HTTP GET 请求都会被缓存,因此如果您想消除客户端浏览器的缓存,请使用 HTTP POST 来进行 Web 服务调用。例如,在 WCF RIA 域服务中,将您的调用和查询方法标记为:

[Invoke(HasSideEffects = true)]
[Query(HasSideEffects = true)]

HasSideEffects只是简单地声明它应该使用POST方法来避免客户端GET的缓存机制。请记住,SL 默认情况下使用浏览器进行 Web 服务调用,并且默认情况下使用可缓存的 GET。这就是为什么您的 Web 服务调用甚至在 RIA 之外的服务也会被缓存:浏览器​​看到您使用 HTTP GET 并缓存结果。

默认情况下对 Web 服务调用使用 GET 是出于性能原因,因为根据 RFC 2616,所有主要浏览器都无法缓存 POST 响应,RFC 2616 规定 POST 应该是幂等操作(又名总是会产生预期结果,但缓存会中断,因为结果可能会随着时间的推移而改变)。

RIA 中的其他操作包括使用 LoadOperations 上的 LoadBehavior 设置缓存。

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

Silverlight 是否缓存 Web 服务调用? 的相关文章

随机推荐

  • 使用 UITextField 的属性文本

    我正在尝试将属性文本与 UITextField 一起使用 我已经自定义了占位符文本 但它忽略了我为主文本属性设置的值 nameTextField attributedText NSAttributedString string attrib
  • 在 Javascript (Angular) 中读取、更改和保存文档

    我需要读取文件 doc 然后替换 doc 中的一些数据 然后发送到打印 doc 或 pdf 第一步 我尝试从文档中读取数据 从 txt 可以正常工作 但从 doc 不行 我在 jsfiddle 中做了例子http jsfiddle net
  • 从命令行编译

    我试图了解该选项的工作原理 classpath从命令行编译时 我尝试从父母那里mydirectory javac cp mydirectory subdir Hello java 但编译器说 javac 没有源文件 如何 cp classp
  • 如何创建动态分配的对象数组而不使用默认构造函数?

    动态创建的对象数组需要使用非默认构造函数 我认为遇到的问题是语法 在我看来 事实上我能够做到这一点 int somePtr new int 5 意味着我应该能够做到这一点 IntegerSet someSet new IntegerSet
  • 已保存实例状态返回 null

    有人可以解释为什么我的savedInstanceState 中的值为空吗 我有 3 个小部件 一个 EditText Button 和 TextView 该人输入他们想要的内容 该短语会在 TextView 中弹出 我想在翻转手机时保留输入
  • 将 php 数组重新排列为嵌套的分层数组

    如何使用 php 将 array 1 转换为 array 2 结构 第一个数组是对生物体列表进行数据库查询的结果 每个生物体都按其目 科 属 种进行分类 从层次上讲 物种是各种属的子分类 属分类是各种科的子分类等 在命名空间术语中 您可以像
  • 我如何通知用户有关 django 中的 webhook

    您好 我在 django 中遇到了网络挂钩问题 我需要一种方法来通知用户他 她已成功付款 通过向我的处理器添加 URL 来向我的网络发送付款成功请求 我会收到有关成功网络挂钩的通知钩子如何向用户显示它以通知其是否成功 我的代码是 这是用户将
  • 使用自定义语法显示 Haskell 元组列表

    我有一个元组列表 1 a yes 2 b no 3 c ok 我如何以以下形式显示此列表作为输出 1 a yes 2 b no 3 c ok 看起来您想要进行的转换是去掉引号字符 如果是 则过滤调用结果show你的数据就足够了 gt let
  • 响应式 Durandal 对话框

    我在新应用程序中使用 Durandal 但 Durandal 的对话框窗口存在问题 我使用它从用户那里获取一些数据 当我手动设置窗口宽度时 默认情况下 Durandal 从 JavaScript 设置窗口位置 如果我想要窗口宽度为 600p
  • 如何对数据库模式进行版本控制? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 您如何准备 SQL 增量 您是否手动将每个模式更改 SQL 保存到增量文件夹中 或者您是否有某种自动比较过程 我对版本控制数据库模式以及源代码的约定感兴趣 也许是一个区分模式的预提交挂钩
  • 从字符串中提取所有数字

    假设我有一个字符串 例如123ad456 我想创建一种将数字组分成一个列表的方法 这样输出将类似于123 456 我试过做return Regex Match str d Value 但只输出第一次出现的数字 因此输出将是123 我也知道我
  • POI Excel:获取样式名称

    我想读取应用于 xlsx 文档中单元格的样式的名称 我已经提取了该文件 在 xl styles xml 中我可以找到样式名称
  • 实体框架多对多关系

    好吧 我正在尝试弄清楚如何正确设置我的数据库 我有两节课 public class Event public int EventId get set public string EventName get set and public cl
  • Java 原始类型和泛型交互

    如果我有一个 Stack 类 class Stack
  • 如何使用另一个类中的 Tcpclient 将数据发送到所有已连接的套接字连接

    Closed 这个问题需要细节或清晰度 目前不接受答案 public void send string msg a2 Encoding ASCII GetBytes msg networkStream clientSocket GetStr
  • R 将特定行和列乘以常数

    我有以下数据 type lt c 1 4 year1 lt c 1 4 year2 lt c 1 4 year3 lt c 1 4 data lt data frame type year1 year2 year3 我想将年份列中的底部两行
  • 的 Html 帮助器

    有没有HTMLHelper用于文件上传 具体来说 我正在寻找替代品
  • 如何通过 R 在 Outlook 正文中显示 Excel 工作表

    我可以通过 RDCOMClient 包将 Excel 文件附加到 Outlook 中 但是如何通过R在邮件正文中显示excel工作表内容 假设工作表中包含一个表格和一个图形 library RDCOMClient init com api
  • 为什么像 3.14 这样的浮点值在 MSVC 中默认被视为 double ?

    为什么我需要输入 3 14f 而不是 3 14 来禁用所有这些警告 这有一个连贯的理由吗 这就是 C 和 C 标准所决定的 浮点文字的类型为 double 如果您需要它们是浮点型 则可以在它们后面加上后缀f 似乎没有任何具体说明原因 但我猜
  • Silverlight 是否缓存 Web 服务调用?

    这是问题所在 我的 Silverlight 应用程序正在使用 WebClient 调用名为 getCampaigns 的 HTTP Web 服务 该服务返回 Campaign 对象的 JSON 数据数组 然后 用户可以与请求的对象进行交互