在编写自定义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也许您可以编辑您的答案以包含该呼叫?)
因此,我有兴趣听到有关XNA游戏/应用程序单元测试的最佳方法的不同想法.精明的谷歌可能会弄明白我为什么要问,但我不想偏向于这个话题:-)
根据McCall的质量模型,产品修订是描述软件产品质量属性的三个主要观点之一.在"产品修订"的视角下,可维护性,查找和修复缺陷的能力被确定为影响修改软件能力的关键品质因素.
显然,在修订过程中的某个阶段,需要人为参与,特别是程序员的参与.代码的格式化会影响程序员有效和高效地修改软件的能力.
你曾经使用过哪些与语言无关的代码格式化指南,以便在代码修订过程中最大限度地提高程序员的效率和效率?
以编程方式创建系统还原点是“禁忌”吗?我会在执行软件更新之前执行此操作。如果有更好的方法仅使用我的软件的文件和数据创建还原点,请告诉我。
我想要一种方法,如果更新过程中一切都崩溃了(关闭/终止更新应用程序、断电、用户拔掉插头等),我可以让用户回到已知的工作状态
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) 我正在为我们的产品开发消息/通知系统.基本要求是:
这些库将用C#编写.Spring.NET刚刚发布了一个具有大量优秀消息抽象的里程碑版本,这很棒 - 我计划广泛使用它.我的基本问题归结为消息经纪人的问题.我的架构看起来像应用程序 - >消息代理队列 - >侦听的服务器应用程序,将所有消息分派到他们需要去的地方,并处理那些长期消息的生命周期 - >消息代理队列或主题 - >监听应用.
最后,问题是:我应该使用哪个消息代理?我偏向于ActiveMQ - 我们在上一个项目中使用它并喜欢它.我不能想到对它的单一攻击,除了它是Java,并且需要在某个地方的服务器上安装java,这对于将使用这项服务的一些人来说可能很难卖.我一直在关注的另一个选择是MSMQ.我出于某种未知原因对它有偏见,而且它似乎也没有很好的多播支持.
有没有人用MSMQ这样的东西?任何利弊,可能会以某种方式影响投票的东西?
最后一点,我们使用的是.NET 2.0.
我有一个带有加载文本的swf到一个Sprite中,根据放入的内容调整大小 - 我喜欢那些比页面更长的浏览器使用其原生滚动条而不是在actionscript中处理它(非常很像http://www.nike.com/nikeskateboarding/v3/ ...)
我确实看过nike做过的东西但是却无法将其拉下来.有任何想法吗?
是否有针对不同浏览器的默认CSS样式表列表?(表格形式的浏览器样式表)
我想知道所有浏览器的默认文本区域字体以供将来参考.
我遇到一个问题,来自一个特定客户端的传入SOAP消息被标记为无效并被我们的XML防火墙设备拒绝.Visual Studio正在插入额外的有效负载数据; 我们认为额外的数据可能导致问题b/c我们在这些消息中看到"VsDebuggerCausalityData"但在其他没有问题的客户端发送的其他数据中没有.无论如何,这是一个起点.
我的问题是客户端如何删除这些额外的数据并仍然从VS运行?为什么VS把它放在那里?
谢谢.
这个问题可能同样适用于具有类似C语言的多行注释的其他语言.这是我遇到的问题.我正在使用Eclipse中的Java代码,我想要注释掉一段代码.但是,有一个包含字符序列"*/"的字符串,Eclipse认为注释应该在那里结束,即使它在字符串中.它给了我很多错误并且无法构建.
/*
... some Java code ...
... "... */ ..." ...
... more Java code ...
*/
Run Code Online (Sandbox Code Playgroud)
Java规范是否与Eclipse对我的多行注释的解释相匹配?我想Java和/或Eclipse会解释这种事情.
我有一些测试数据,想为每个项目创建一个单元测试.我的第一个想法是这样做:
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)
这样做的缺点是它在一次测试中处理所有数据.我想在运行中为每个项目生成一个测试.有什么建议?
unit-testing ×2
apache-flex ×1
asp.net ×1
browser ×1
c# ×1
caching ×1
comments ×1
css ×1
default ×1
eclipse ×1
flash ×1
fonts ×1
formatting ×1
http ×1
java ×1
javascript ×1
messaging ×1
msmq ×1
python ×1
qa ×1
soap ×1
stylesheet ×1
web-services ×1
xna ×1