我有一个.NET 3.5桌面应用程序,当它所在的测试机器不在办公室时,它已经显示出功能的周期性减速.
我设法在没有互联网连接的情况下在办公室的机器上复制错误,但只有当我使用ANTS性能分析器时,我才能更清楚地了解正在发生的事情.
在ANTS中,我看到"等待同步"需要16秒,这与NHibernate尝试加载System.Data.SqlServerCE.dll程序集时在应用程序中看到的延迟相对应.
如果我立即再次尝试动作它会毫无延迟地工作但如果我离开它5分钟,那么下次我尝试它时再次加载会很慢.
到目前为止,我的研究似乎是因为SqlServerCE dll已签名,因此系统正在尝试连接以获取证书吊销列表并超时.
禁用"Internet选项"LAN设置中的"自动检测设置"设置会使问题消失,同时禁用"检查发布者证书吊销".
但是,部署此应用程序的管理员不会对在每台计算机或每个用户上禁用证书检查的想法感到满意,因此我确实需要让应用程序级别禁用CRL检查工作.
.net 2.0中有一个记录良好的错误,它描述了这种行为,并提供了一个配置文件元素的可能修复.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这不是为我工作然而,即使我使用.NET 3.5.
SQLServerCE dll是由NHibernate动态加载的,我想知道它是动态的这个事实可能不知何故设置不起作用的原因,但我不知道如何检查它.
任何人都可以提供有关配置设置可能不起作用的建议吗?
或者是否有另一种方法可以在应用程序级别禁用检查,也许是CAS策略设置,我可以使用它在应用程序安装时为应用程序设置例外?
或者我可以在应用程序中更改信任级别或类似的东西吗?
c# nhibernate certificate code-access-security certificate-revocation
我如何写出xml
<?xml version="1.0" encoding="UTF-8"?>
<calibration>
<ZoomLevel 250>0.0100502512562814</ZoomLevel 250>
<ZoomLevel 250>0.0100502512562814</ZoomLevel 250>
........
</calibration>
Run Code Online (Sandbox Code Playgroud)
我知道如何写出来,但我不能写出一个循环,我需要atm我有写的xml表是
public void XMLWrite(Dictionary<string, double> dict)
{
//write the dictonary into an xml file
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(docNode);
XmlNode productsNode = doc.CreateElement("calibration");
doc.AppendChild(productsNode);
foreach (KeyValuePair<string, double> entry in dict)
{
XmlNode zoomNode = doc.CreateElement("ZoomLevel");
XmlAttribute ZoomLevel = doc.CreateAttribute(entry.Key.ToString());
//XmlElement PixelSize = doc.CreateElement (entry.key = entry.Value.ToString());
zoomNode.Attributes.Append(ZoomLevel);
productsNode.AppendChild(zoomNode);
}
doc.Save(pathName);
}
Run Code Online (Sandbox Code Playgroud)