问题列表 - 第271页

为什么HttpCacheability.Private会抑制ETag?

在编写自定义IHttpHandler时,我遇到了一个我没想到的关于HttpCachePolicy对象的行为.

我的处理程序计算并设置一个实体标记(使用与当前响应对象关联的HttpCachePolicy上的SetETag方法).如果我使用SetCacheability方法将缓存控件设置为public,则所有内容都像魅力一样,服务器会沿着e-tag标头发送.如果我将其设置为私有,则将禁止e-tag标头.

也许我只是看起来不够努力,但我没有在HTTP/1.1规范中看到任何可以证明这种行为的理由.为什么你不想在仍禁止代理存储数据的同时向浏览器发送E-Tag?

using System;
using System.Web;

public class Handler : IHttpHandler {
    public void ProcessRequest (HttpContext ctx) {
        ctx.Response.Cache.SetCacheability(HttpCacheability.Private);
        ctx.Response.Cache.SetETag("\"static\"");
        ctx.Response.ContentType = "text/plain";
        ctx.Response.Write("Hello World");
    }

    public bool IsReusable { get { return true; } }
}
Run Code Online (Sandbox Code Playgroud)

将返回

Cache-Control: private
Content-Type: text/plain; charset=utf-8
Content-Length: 11

但如果我们将其改为公开,它将会回归

Cache-Control: public
Content-Type: text/plain; charset=utf-8
Content-Length: 11
Etag: "static"

到目前为止,我已经在ASP.NET开发服务器和IIS6上运行了相同的结果.此外,我无法使用明确设置ETag

Response.AppendHeader("ETag", "static")
Run Code Online (Sandbox Code Playgroud)

更新:在IIS7中运行时可以手动附加ETag标头,我怀疑这是由ASP.NET和IIS7管道之间的紧密集成引起的.

澄清:这是一个很长的问题,但核心问题是:为什么ASP.NET会这样做,我该如何解决它?我应该这样做吗?

更新:我将接受Tony的答案,因为它基本上是正确的(去Tony!).我发现如果你想完全模拟HttpCacheability.Private,你可以设置ServerAndPrivate的可缓存性,但你也有调用缓存.SetOmitVaryStar(true)否则缓存会将Vary:*标头添加到输出中,您不希望这样.当我获得编辑权限时,我会将其编辑到答案中(或者如果您看到这个Tony也许您可以编辑您的答案以包含该呼叫?)

c# asp.net caching http

25
推荐指数
1
解决办法
6759
查看次数

XNA单元测试

因此,我有兴趣听到有关XNA游戏/应用程序单元测试的最佳方法的不同想法.精明的谷歌可能会弄明白我为什么要问,但我不想偏向于这个话题:-)

xna unit-testing

10
推荐指数
1
解决办法
4663
查看次数

什么是普遍接受的代码格式指南?

根据McCall的质量模型,产品修订是描述软件产品质量属性的三个主要观点之一.在"产品修订"的视角下,可维护性,查找和修复缺陷的能力被确定为影响修改软件能力的关键品质因素.

显然,在修订过程中的某个阶段,需要人为参与,特别是程序员的参与.代码的格式化会影响程序员有效和高效地修改软件的能力.

你曾经使用过哪些与语言无关的代码格式化指南,以便在代码修订过程中最大限度地提高程序员的效率和效率?

language-agnostic formatting maintainability qa

3
推荐指数
2
解决办法
605
查看次数

创建系统还原点 - 有什么想法吗?

以编程方式创建系统还原点是“禁忌”吗?我会在执行软件更新之前执行此操作。如果有更好的方法仅使用我的软件的文件和数据创建还原点,请告诉我。

我想要一种方法,如果更新过程中一切都崩溃了(关闭/终止更新应用程序、断电、用户拔掉插头等),我可以让用户回到已知的工作状态

    private void CreateRestorePoint(string description)
    {
        ManagementScope oScope = new ManagementScope("\\\\localhost\\root\\default");
        ManagementPath oPath = new ManagementPath("SystemRestore");
        ObjectGetOptions oGetOp = new ObjectGetOptions();
        ManagementClass oProcess = new ManagementClass(oScope, oPath, oGetOp);

        ManagementBaseObject oInParams = oProcess.GetMethodParameters("CreateRestorePoint");
        oInParams["Description"] = description;
        oInParams["RestorePointType"] = 12; // MODIFY_SETTINGS
        oInParams["EventType"] = 100;

        ManagementBaseObject oOutParams = oProcess.InvokeMethod("CreateRestorePoint", oInParams, null); 
    }
Run Code Online (Sandbox Code Playgroud)

system-restore

5
推荐指数
1
解决办法
1620
查看次数

多播,消息传递,ActiveMQ与MSMQ?

我正在为我们的产品开发消息/通知系统.基本要求是:

  • 火与忘记
  • 持久性消息集,可能更新,留在那里直到发送者说要删除它们

这些库将用C#编写.Spring.NET刚刚发布了一个具有大量优秀消息抽象的里程碑版本,这很棒 - 我计划广泛使用它.我的基本问题归结为消息经纪人的问题.我的架构看起来像应用程序 - >消息代理队列 - >侦听的服务器应用程序,将所有消息分派到他们需要去的地方,并处理那些长期消息的生命周期 - >消息代理队列或主题 - >监听应用.

最后,问题是:我应该使用哪个消息代理?我偏向于ActiveMQ - 我们在上一个项目中使用它并喜欢它.我不能想到对它的单一攻击,除了它是Java,并且需要在某个地方的服务器上安装java,这对于将使用这项服务的一些人来说可能很难卖.我一直在关注的另一个选择是MSMQ.我出于某种未知原因对它有偏见,而且它似乎也没有很好的多播支持.

有没有人用MSMQ这样的东西?任何利弊,可能会以某种方式影响投票的东西?

最后一点,我们使用的是.NET 2.0.

messaging activemq-classic msmq

22
推荐指数
3
解决办法
2万
查看次数

如何在运行时调整swf的大小以使浏览器创建html滚动条?

我有一个带有加载文本的swf到一个Sprite中,根据放入的内容调整大小 - 我喜欢那些比页面更长的浏览器使用其原生滚动条而不是在actionscript中处理它(非常很像http://www.nike.com/nikeskateboarding/v3/ ...)

我确实看过nike做过的东西但是却无法将其拉下来.有任何想法吗?

javascript apache-flex flash actionscript-3

5
推荐指数
2
解决办法
4473
查看次数

浏览器的默认CSS样式表

是否有针对不同浏览器的默认CSS样式表列表?(表格形式的浏览器样式表)

我想知道所有浏览器的默认文本区域字体以供将来参考.

css browser fonts default stylesheet

49
推荐指数
3
解决办法
3万
查看次数

如何从SOAP消息中删除"VsDebuggerCausalityData"数据?

我遇到一个问题,来自一个特定客户端的传入SOAP消息被标记为无效并被我们的XML防火墙设备拒绝.Visual Studio正在插入额外的有效负载数据; 我们认为额外的数据可能导致问题b/c我们在这些消息中看到"VsDebuggerCausalityData"但在其他没有问题的客户端发送的其他数据中没有.无论如何,这是一个起点.

我的问题是客户端如何删除这些额外的数据并仍然从VS运行?为什么VS把它放在那里?

谢谢.

soap web-services visual-studio

20
推荐指数
4
解决办法
1万
查看次数

Java多行注释是否占字符串?

这个问题可能同样适用于具有类似C语言的多行注释的其他语言.这是我遇到的问题.我正在使用Eclipse中的Java代码,我想要注释掉一段代码.但是,有一个包含字符序列"*/"的字符串,Eclipse认为注释应该在那里结束,即使它在字符串中.它给了我很多错误并且无法构建.

/*
   ... some Java code ...
   ... "... */ ..." ...
   ... more Java code ...
*/
Run Code Online (Sandbox Code Playgroud)

Java规范是否与Eclipse对我的多行注释的解释相匹配?我想Java和/或Eclipse会解释这种事情.

java eclipse comments

5
推荐指数
1
解决办法
1395
查看次数

你如何在python中生成动态(参数化)单元测试?

我有一些测试数据,想为每个项目创建一个单元测试.我的第一个想法是这样做:

import unittest

l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]]

class TestSequence(unittest.TestCase):
    def testsample(self):
        for name, a,b in l:
            print "test", name
            self.assertEqual(a,b)

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

这样做的缺点是它在一次测试中处理所有数据.我想在运行中为每个项目生成一个测试.有什么建议?

python unit-testing parameterized-unit-test

211
推荐指数
10
解决办法
8万
查看次数