Tag: .net

在.netexception中如何获得具有参数值的堆栈跟踪

我正在尝试在.net(c#)中添加一个未处理的exception处理程序,该程序应该尽可能为“用户”提供帮助。 最终用户大多是程序员,所以他们只需要提示他们操作错误的对象。 我正在开发一个窗口类似于Windows XP的错误报告,当一个应用程序崩溃,但给出尽可能多的imediate信息imediatly关于抛出的exception。 虽然堆栈跟踪使我(因为我有源代码)查明问题的根源,用户没有它,所以他们丢失没有进一步的信息。 不用说,我不得不花费大量的时间来支持这个工具。 有几个系统exception,如Dictionary集合引发的KeyNotFoundExceptionexception,因为它们没有在消息中包含没有find的关键字,所以这真是令我烦恼。 我可以使用大量的try catch块来填充代码,但是它相当具有侵略性,并且有更多的代码需要维护,更不用说更多的string了,而这些string必须被本地化。 最后问题:有没有什么办法来获得(在运行时)调用堆栈跟踪中的每个函数的参数的值? 只有这一点可以解决90%的支持电话。

我已经将Windows服务构build为“任何CPU”。 为什么它在我的64位机器上以32位模式运行?

我已经将Windows服务构build为“任何CPU”。 但是,当我在我的64位机上运行它时,它运行在32位。 我该如何解决? 我正在使用.NET和C#,我的操作系统是Windows 2008 R2。 如果我在x64中构build它,它将以64位模式正确加载。 然而,“任何Cpu” – 这是我想要的 – 加载在32位,即使它运行的机器完全支持64位。 编辑根据反馈添加更多信息 我们有第三方工具以及参考c ++托pipe程序集。 这些可能会或可能不会为任何CPU构build。 事实上,我知道c ++托pipe程序集只是为x86构build的。 然而,奇怪的是,如果我特别指定x64的过程将启动,并在x64工作。 如果框架试图加载c ++托pipe程序集,则会失败。 我不介意,因为在代码中,如果我们在64位模式下运行,我们不会加载32位托pipe的++程序集。 难道这个构build数字是因为在这里有一个32位的程序集,它应该把启动过程(在这种情况下是一个Windows服务程序集)标记为x86?

是否有Visual Studio的configurationpipe理器的替代/插件?

我有需要删除和重命名视觉工作室的解决scheme/项目configurationselect,有没有任何工具,将有助于这个? 我发现内置的工具非常无益。 例如,当我从解决scheme中删除一个configuration时,它将拒绝删除相关的项目configuration,以防其他地方需要它们。 重命名解决schemeconfiguration也不会重命名它的相关configuration。 必须有一个更好的方法来做到这一点。 那里有其他的工具吗?

从一个没有ONE字段的entityframework中检索一个对象

我正在使用entity framework来连接数据库。 我有一个小问题: 我有一个表有一个varbinary(MAX)列(文件stream)。 我使用SQL请求来pipe理“数据”部分,但其余的EF(文件的元数据)。 我有一个代码,必须获得文件的所有文件ID,文件名,GUID,修改date…。 这根本不需要“数据”字段。 有没有办法检索一个列表,但没有填写这个列? 就像是 context.Files.Where(f=>f.xyz).Exclude(f=>f.Data).ToList(); ?? 我知道我可以创build匿名对象,但是我需要将结果传递给一个方法,所以没有匿名方法。 我不想把它放在一个匿名types列表中,然后创build一个非匿名types(File)的列表。 目标是避免这种情况: using(RsSolutionsEntities context = new RsSolutionsEntities()) { var file = context.Files .Where(f => f.Id == idFile) .Select(f => new { f.Id, f.MimeType, f.Size, f.FileName, f.DataType, f.DateModification, f.FileId }).FirstOrDefault(); return new File() { DataType = file.DataType, DateModification = file.DateModification, FileId = file.FileId, FileName […]

.NET数组的内存布局

什么是.NET数组的内存布局? 拿这个数组为例: Int32[] x = new Int32[10]; 我明白,arrays的大部分是这样的: 0000111122223333444455556666777788889999 每个字符是一个字节,数字对应于数组中的索引。 另外,我知道所有对象都有一个types引用和一个同步块索引,所以上面可以调整为: ttttssss0000111122223333444455556666777788889999 ^ +- object reference points here 此外,数组的长度需要被存储,所以也许这是更正确的: ttttssssllll0000111122223333444455556666777788889999 ^ +- object reference points here 这是完整的吗? 数组中有更多的数据吗? 我问的原因是,我们正在试图估计一个相当大的数据语料库的几个不同的内存表示将会花费多less内存,并且数组的大小变化很大,所以开销可能有一个在一个解决scheme中产生了巨大的影响,但是在另一个解决scheme中可能没有那么多 所以基本上,对于一个数组来说,有多less开销,这基本上是我的问题。 而在arrays坏队伍醒来之前,解决scheme的这一部分是一个静态的一次构build一次引用的东西,所以使用可生成列表在这里是没有必要的。

如何将SSL添加到使用httplistener的.net应用程序 – 它将不会在IIS上运行

最近的粗体编辑我使用.net HttpListener类,但我不会在IIS上运行,而不是使用ASP.net。 这个网站描述了实际使用什么代码来实现与asp.net的SSL, 这个网站描述了如何设置证书(虽然我不知道它是否只适用于IIS)。 类文档描述了各种types的authentication(基本,摘要,Windows等)—它们都不涉及SSL。 它确实表示,如果使用HTTPS,则需要设置服务器证书 。 这将是一个单行的属性设置和HttpListener算出其余的? 总之,我需要知道如何设置证书以及如何修改代码来实现SSL。 虽然在尝试访问HTTPS时不会发生,但是我在系统事件日志中发现了一个错误 – 源是“Schannel”,消息的内容是: 尝试访问SSL服务器凭证私钥时发生致命错误。 从encryption模块返回的错误代码是0x80090016。 编辑: 迄今采取的步骤 在C#中创build一个可用于HTTP连接的工作HTTPListener(例如“ http:// localhost:8089 / foldername / ” 使用makecert.exe创build一个证书 使用certmgr.exe添加了要信任的证书 使用Httpcfg.exe来侦听testing端口上的SSL连接(例如8090) 通过listener.Prefixes.Add( https:// localhost:8090 / foldername / “)将端口8080添加到HTTPListener中。 在浏览器中testingHTTP客户端连接,例如( http:// localhost:8089 / foldername / ),并接收正确的返回 在浏览器中testing了HTTPS客户端连接,例如( http:// localhost:8090 / foldername / ),并接收到“数据传输中断”(在Firefox中) 在Visual Studio中进行debugging显示,当HTTPS连接开始时,接收请求的侦听器callback不会被触发 – 我没有看到任何可以设置断点的位置来捕捉其他事情。 netstat显示侦听端口对于HTTPS和HTTP都是开放的。 在尝试连接后,HTTPS端口将转至TIME_WAIT。 提琴手和HTTPAnalyzer不捕捉任何stream量,我想它没有得到足够的过程中显示在这些HTTP分析工具 问题 […]

我怎么知道什么监视器的WPF窗口

在C#应用程序中,如何查找WPF窗口是否在主监视器或另一个监视器中?

dll旁边的xml文件的目的是什么?

例如,log4net.dll附带log4net.xml。 这个XML的用途是什么?

为什么没有Windows.Forms.TreeView的SelectedNodeChanged事件?

System.Web.UI.WebControls.TreeView类提供这个事件,但是TreeView的Forms版本没有。 表单世界中的等价物是什么? 我使用的是AfterSelect,但看起来不太正确。 也许这是我正在寻找的东西,但是文档有点朦胧。

Java VM vs .NET CLR的基准testing性能

你有没有必要certificateselect使用.NET而不是基于性能的Java? 对于可以执行以下操作的典型的大容量事务处理系统, 并发数据库事务 math计算 与其他Web服务交互(SOAP / XML,XML-RPC) 我的方法是在JVM和.NET CLR的C#中都使用Java编写基准testing,并在不同负载水平下对上述操作进行基准testing,并比较结果。 除了语言和平台偏好之外, 我有兴趣了解如何在Java VM和.NET CLR之间做出决定性的性能比较 ? 是否有任何全面和受尊重的基准?