Articles of .net

在IIS 7.5 / Windows 7家庭高级版RavenDB错误

我不能让RavenDB运行在我的本地IIS副本,我似乎无法find任何有关它的信息。 我已经在文件夹和文件上设置了适当的权限,并按照设置说明调整了应用程序池,但似乎仍然不起作用。 我得到的唯一(无益的)错误是这样的: Could not authenticate against the server Message: [HttpWebRequest_WebException_RemoteServer] Arguments: NotFound Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.10411.0&File=System.Windows.dll&Key=HttpWebRequest_WebException_RemoteServer Uri: /databases?database=Default Server Uri: http://localhost:82/docs/Raven/Databases/Kiosk — Error Information — System.Net.WebException: [HttpWebRequest_WebException_RemoteServer] Arguments: NotFound Debugging resource strings are unavailable. Often the key and arguments […]

SSL证书validation – 是否涉及任何caching?

案子: 几天前,我们的集成合作伙伴错过了更改SSL服务器证书的最后期限,证书的有效期至两天前。 发生这种情况时,我们的客户端软件开始抛出exception:“根据validation过程,远程证书无效”。 我们的客户端软件是用.NET 4编写的,并在Windows Server 2012上运行。SSL调用是通过WCF堆栈完成的。 昨天下午,我们的集成合作伙伴安装了一个新的有效的SSL证书。 现在的问题是,我们仍然在客户端上得到同样的exception:“根据validation过程,远程证书是无效的”。 我的问题: SSL证书validation状态是否以某种方式caching在客户端上? 我们的客户端软件是一个长期运行的过程,很less重新启动。 或者这是SSL协议的一些固有的部分? 我不是SSL或networking方面的专家,但是a)只有在SSL握手过程中,客户端才会检查服务器证书,以及b)在SSL握手中交换的信息可以用于多个networking请求同一台服务器 如果确实如此,那么它是如何定义SSL握手有效的? 更新 :我们重新启动客户端进程,然后它工作。 对我来说,这表明某个SSL服务器证书validation状态被caching在客户端上,每个进程。 我仍然非常想了解更多关于这个细节的信息:在什么级别的堆栈上发生这种情况? WCF? 。净? Windows API? 这个caching多久了? 有什么办法可以调整caching行为吗? 我可以手动清空caching吗? 这是logging在某处吗? 全堆栈跟踪: [E0]: The remote certificate is invalid according to the validation procedure. [T0]: System.Security.Authentication.AuthenticationException at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) […]

如何debugging挂起的WPF应用程序?

我有一个挂在一个用户的机器上的WPF应用程序。 其他用户不受影响。 该应用程序挂起运行本身的开发环境,同时在debugging运行。 这个问题可以被可靠地重现,只要用户试图去做就会挂起。 在debugging下运行没有线索,没有任何exception,应用程序只是停止响应。 我有什么select来debugging呢? 是否有任何外部工具 – 像sysinternals套件的东西 – 可以帮助? 是否有任何Visual Studiodebugging器技巧或技巧,可能会提供更多的信息?

Windows使用哪种开源的面向文档的数据库系统最为成熟?

在使用关系数据库作为后端存储我所有的Windows编程生活(当前的.NET)之后,我想用这个维基百科的定义来试验一个面向文档的数据库。 它可以是独立的或分层在现有的非商业数据库系统上。 什么开源的面向文档的数据库解决scheme,你会从你自己的Windows编程经验推荐,为什么? (开源的原因是为了保持廉价,也是因为开源通常是不错的,处于领先地位。) 很高兴有一个.NET提供商连接。 如果一切顺利的话,最终选定的系统可能会成为一个真正的解决scheme。 诚然,这是有些主观的,可能有争议的,所以保持真实的人,我也会这样做 – 你的答案也将是对其他人在Windows上首次查看面向文档的数据库非常宝贵。 我相信你的答案的总体价值将超过任何偏见。 谢谢。

为什么相同的代码大小会产生不同大小的exe文件

我有这个代码: namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); } } } 生成一个exe文件大小5kb。 现在我只是改变它,所以所有的string是不同的: namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.WriteLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("3aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("6aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("9aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); Console.WriteLine("10aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); } } } 现在的exe文件是7kb。 现在我可以猜测,某些地方某些function是通过使用所有的string作为内存中只有一个string改善内存使用,但我不知道哪些… 所以我的问题是什么部分使这个记忆改善?

读取和写入一个大文件,而不是一个小块的磁盘一次的缺点?

我主要在基于Windows和Windows CE的系统上工作,其中CreateFile , ReadFile和WriteFile是工作马,无论是在本地Win32域还是在托pipe的.Net域中。 到目前为止,我一直没有任何明显的问题写或读大块文件,而不是循环,直到处理几个较小的块。 我通常将IO工作委托给后台线程,在完成时通知我。 但是看看文件IO教程或“教科书示例”,我经常会发现“小块循环”,而没有解释为什么它被使用,而不是更明显(我敢说!)“一次完成”。 我有什么缺点,我没有明白? 澄清: 通过大文件,我比较了我的单块与多个块。 我提到的多个块的例子通常在Windows CE上有1024个字节的大小,在桌面上有10个大小。 我的大文件通常是二进制文件,如手机等相机的照片,大小顺序为2-10 MB。 换句话说,不接近1 GB。

Windows服务需要等待,Thread.Sleep?

我有交stream#窗口服务,需要每60秒执行一次数据库查询(或任何间隔在configuration文件中设置)。 我在一个while循环中使用Thread.sleep(60)来完成这个任务。 有一个更好的方法吗? 谢谢

如何查看是否对文件或文件夹select“包含可inheritance的权限”?

我在C#编写一个小实用程序,以确保指定的文件夹及其所有内容具有适当的访问权限(我想授予Authenticated Users组完全访问权限)。 下面的代码似乎正常工作更新顶级文件夹的ACL(访问控制列表): SecurityIdentifier allUsers = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null); InheritanceFlags iFlags = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; FileSystemAccessRule newRule = new FileSystemAccessRule(allUsers, FileSystemRights.FullControl, iFlags, PropagationFlags.None, AccessControlType.Allow); DirectoryInfo info = new DirectoryInfo(folderPath); DirectorySecurity security = info.GetAccessControl(); security.AddAccessRule(newRule); info.SetAccessControl(security); 但是,我注意到,这个新的访问规则不会传播到在其安全属性中未选中“包含可inheritance权限…”选项的子文件夹。 这只是有道理的。 所以,我想要做的是打开任何这样的子文件夹的安全权限inheritance。 我的挖掘发现了ObjectSecurity.SetAccessRuleProtection方法应该是我需要的一半。 但是,在已经inheritance父类的DACL的对象上盲目地使用上述方法似乎是草率的。 因此,我想确定哪些对象的权限inheritanceclosures,但我似乎无法find相应的方法或返回此信息的属性。 有一个吗? 我在这里错过了什么?

.NET Thread.Sleep是否受到DST(或系统时间)更改的影响?

我不确定Windows内核如何处理线程时间… 我正在谈论的DST和任何其他事件,影响一天在Windows上的时间框。 例如, Thread.Sleep将阻塞从零到无限毫秒的线程。 如果内核使用与一天中的时间相同的“时钟”,那么何时使用 (a)某人手动改变一天的时间,或者 (b)一些时间服务器的同步改变了一天的时间,或者 (c)夏时制开始或结束,系统已configuration为响应这两个DST事件, 等等 , 睡觉线程在任何方式受到影响? 即内核是否处理这样的事件,程序员不需要做什么? 注意 :对于非关键应用程序,这可能是一个谁在乎? 情况。 对于关键应用,知道这个问题的答案是重要的,因为有可能必须编程这样的例外条件。 谢谢 编辑:我想到了一个简单的testing,我在LINQPad 4中运行。 testing包括让线程进入睡眠状态,大约在线程进入睡眠的同时启动一个手动定时器,然后(a)将时间提前一个小时,然后进行第二个testing,将时间移回到两个小时…在这两项testing中,睡眠时间都没有受到影响。 底线:使用Thread.Sleep,不需要担心会影响一天的时间的事件。 这里是琐碎的C#代码: Int32 secondsToSleep; String seconds; Boolean inputOkay; Console.WriteLine("How many seconds?"); seconds = Console.ReadLine(); inputOkay = Int32.TryParse(seconds, out secondsToSleep); if (inputOkay) { Console.WriteLine("sleeping for {0} second(s)", secondsToSleep); Thread.Sleep(secondsToSleep * 1000); Console.WriteLine("i am awake!"); } else […]

如何在Linux中获得.Net文件的AssemblyVersion

有没有什么办法可以在不使用mono的情况下获得.Net可执行文件的AssemblyVersion? 我想要的是一个脚本或命令,可以让我在Linux上获得AssemblyVersion。 我试过了: #strings file.exe | grep AssemblyVersion 但它只是string而不是数字。 还检查了: #file file.exe 但只有一般的信息。 有任何想法吗?