我们能够可靠地重新创建以下场景:
在网络连接失败后,IE会发出下一个AJAX请求,但在执行HTTP发布时只发送HTTP标头(而不是正文).这会导致服务器上出现各种问题,因为它只是部分请求.谷歌与Bing的这个问题,你会发现很多人抱怨使用AJAX或无法解释的AJAX失败的"随机服务器错误".
我们知道IE(与大多数其他浏览器不同)总是将HTTP POST作为TWO TCP/IP数据包发送.标题和正文是分开发送的.在故障发生后的情况下,IE仅发送标头.
所以我的问题是 - 它为什么会这样?基于HTTP规范似乎是错误的,其他浏览器不会这样做.这只是一个错误吗?当然,这会在任何严肃的基于AJAX的Web应用程序中造成严重破坏.
参考信息:
由HTTP保持活动超时触发的类似问题短于1分钟,并在此处记录:
http://support.microsoft.com/default.aspx?kbid=831167
以下是故障包捕获之前和之后:
请注意如何发送HTTP标头和Payload http://img827.imageshack.us/i/beforee.png/
失败后,请注意如何仅发送标头.IE 从不发送有效负载,服务器最终会以超时响应. http://img203.imageshack.us/i/retryt.png/
你如何正确编码包含哈希(#)的路径?请注意,散列不是片段(书签?)指示符,而是路径名称的一部分.
例如,如果有这样的路径:
http://www.contoso.com/code/c#/somecode.cs
例如,尝试执行此操作时会导致问题:
Uri myUri = new Uri("http://www.contoso.com/code/c#/somecode.cs");
Run Code Online (Sandbox Code Playgroud)
它似乎将哈希解释为片段指示符.
用%23手动替换#感觉不对.是否还有其他角色需要更换?在Uri和HttpUtility中有一些转义方法,但似乎都没有.
我们想通过ClickOnce部署应用程序,但您确实需要单击两次.即一旦在链接上 - 至少再一次在"你想运行这个应用程序"对话框(第一次).
可以在某些PC上创建某种信任(通过组策略或其他方式),以便用户永远不会被问到任何问题.即我们已经验证了应用程序是受信任的,只需获取此URL即可启动.
如何使用GDI +概述图形路径?例如,我将两个相交的矩形添加到GraphicsPath.我想仅绘制此结果图形路径的轮廓.
请注意,我不想填充该区域,我只想绘制轮廓.
例:
如果您在一个锁代码块内有多个共享变量的分配,是否一定意味着所有这些更改对其他线程立即可见,一旦它们在同一对象上输入锁语句就可能在其他处理器上运行 - 或者没有这样的保证?
那里的许多示例显示了一个公共变量的单个“设置”或“获取”,并详细介绍了内存屏障,但是如果内部有一组更复杂的语句会发生什么?甚至有可能做其他事情的函数调用?
像这样的东西:
lock(sharedObject)
{
x = 10;
y = 20;
z = a + 10;
}
Run Code Online (Sandbox Code Playgroud)
如果此代码在另一个线程上运行,而该线程可能在另一个处理器上执行,它是否对更改的“可见性”做出任何保证?
lock (sharedObject)
{
if (y == 10)
{
// Do something.
}
}
Run Code Online (Sandbox Code Playgroud)
如果答案是否定的- 也许并解释何时这些变化可能变得可见?
我们正在使用CCNet 1.4.4.83但是当MSBuild任务失败时,我们不会在电子邮件通知中获得MSBuild结果(即丢失文件或编译失败的原因).
我确实在CCNet网站(仪表板)上看到了构建失败.
我可以在artifacts文件夹中看到一个名为msbuild-results.xml的文件,因此msbuild任务看起来像是正确配置的.
看起来由于某种原因,在创建电子邮件通知时,但是在查看仪表板时,结果不会合并.
电子邮件任务位于publishers部分和标记之后.
我错过了什么?
c# ×3
.net ×1
ajax ×1
ccnet-config ×1
clickonce ×1
email ×1
gdi+ ×1
javascript ×1
locking ×1
msbuild-task ×1
uri ×1
url ×1