草庐IT

c# - 你会如何重构这段臭代码? (记录、复制和粘贴,.Net 3.5)

我有这样的代码:Loggerlogger=newLogger();System.Diagnostics.StopwatchstopWatch=newSystem.Diagnostics.Stopwatch();logger.LogInformation("CallingSomeObject.SomeMethodat"+DateTime.Now.ToString());stopWatch.Start();//ThisisthemethodI'minterestedin.SomeResponseresponse=someObject.SomeMethod(someParam);stopWa

c# - 从 C# List<T> 中删除项目是否会保留其他项目的订单?

最近,我写了很多看起来像这样的代码:ListmyList=newList();...for(inti=0;i我只是变得有点偏执,也许List在删除时不保留对象顺序。我不太了解C#规范,无法确定。有人可以验证我是不是在找这种模式的麻烦吗?编辑:也许我应该澄清一下,上面是一个非常简化的例子,如果需要删除该项目会发生更多事情,所以我不认为List.RemoveAll()在这里非常适用。虽然这是一个很好的功能。我在if()中添加了评论上面的block特别提到了这一点。 最佳答案 List添加、插入和删除时将始终保持相对顺序;如果没有,它就不

c# - ASP.NET MVC CSRF 防伪 token 会过期吗?

我正在我的ASP.NETMVC5应用程序中实现CSRF防伪保护。特别是,我引用了MikeWasson在ASP.NETwebsite上描述的方法。保护响应AJAX请求的Controller方法,例如在WebAPIController中。这种方法利用了AntiForgery.GetTokens生成基于用户的加密防伪token的方法,然后是AntiForgery.Validate验证提交的token是否属于当前用户。我的问题是:这些代币有生存时间吗?它们会过期吗?如果是,它们的有效期有多长?该文档在该主题上没有提及。我不想在我的系统中允许未过期的token。此外,我想与客户沟通他们在请求新t

c# - 为什么 Entity Framework 会尝试选择所有列,即使我只指定了两个列?

我继承了一个ASPMVC项目,该项目使用EntityFramework6.1.3与DynamicsCRM2011SQL数据库进行交互。我正在使用此查询来尝试获取所有具有帐号的事件帐户,并且我只选择两列为匿名类型:varresults=context.Accounts.Where(a=>(a.AccountNumber!=null)&&(a.StateCode==(int)AccountState.Active)).Select(a=>new{a.AccountId,a.AccountNumber});(context是DbContext,Accounts是DbSet,Account定义

c# - 为什么这个不安全的代码会抛出 NullReferenceException?

我正在使用不安全的代码解决CodeGolf,上的问题我发现了一些我无法解释的东西。这段代码:unsafe{inti=*(int*)0;}因访问冲突(Segfault)而崩溃,但此代码:unsafe{*(int*)0=0;}抛出NullReferenceException。在我看来,第一个正在执行读取,第二个正在执行写入。一个异常告诉我,CLR中的某个地方正在拦截写入并在操作系统终止进程之前将其停止。为什么这会发生在写上,而不是在读上?如果我使指针值足够大,它会在写入时出现段错误。这是否意味着CLR知道有一block内存是保留的,甚至不会尝试写入?那么,为什么它允许我尝试读取该block

c# - 如果达到 Sql Server Compact Edition 的限制会怎样?

如果数据库达到SQLServerCompactEdition的4GB限制会怎样?这有特殊的异常(exception)吗?我可以安全地捕获此事件或异常,比方说,创建一个新数据库吗? 最佳答案 我自己没有经历过,但它看起来像一个SqlCeException将被抛出并且包含SqlCeError的NativeError属性错误代码为25104(SSCE_M_DATABASETOOBIG)。这是一个listingSqlCeError与数据库引擎错误相关的native代码——关于数据库文件太大的代码大约减少了2/3。该list适用于SQLCE3

c# - 带有未捕获异常的 Task.Factory.StartNew 会杀死 w3wp?

我刚刚将我网站的一些代码从使用QueueUserWorkItem转换为Task.Factory.StartNew我有一些错误的代码引发了异常并最终关闭了w3wp。在WindowsServer2008R2、x64上运行IIS7.5Task.Factory.StartNew(()=>{MethodThatThrowsException();}Application:w3wp.exeFrameworkVersion:v4.0.30319Description:Theprocesswasterminatedduetoanunhandledexception.ExceptionInfo:Syst

c# - 当 Azure 推送通知发送失败时会发生什么?

是否有关于NotificationOutcome类在失败时的状态的文档?NotificationOutcomeresult=await_hub.SendNotificationAsync(azureNotification,tags);MSDNdocumentation非常(完全)没用。我猜result.Failure和result.Success的非零值意味着出了点问题(两者似乎都为0表示成功)result.State可能更有用,但似乎也没有太多关于此的文档 最佳答案 我在this上找到了答案页IftheEnableTestSen

c# - 仅在构造函数中使用私有(private) setter 是否会使对象线程安全?

我知道我可以像这样创建一个不可变的(即线程安全的)对象:classCantChangeThis{privatereadonlyintvalue;publicCantChangeThis(intvalue){this.value=value;}publicintValue{get{returnthis.value;}}}但是,我通常会“作弊”并这样做:classCantChangeThis{publicCantChangeThis(intvalue){this.Value=value;}publicintValue{get;privateset;}}然后我想知道,“为什么这行得通?”它真

c# - 分配相同大小的对象是否会提高 GC 或 "new"性能?

假设我们要创建许多字节数组类型的小对象。大小各不相同,但总是低于1024字节,比如780,256,953....如果我们始终只分配bytes[1024],并且只使用需要的空间,是否会随着时间的推移提高operatornew或GC效率?UPD:这是短暂的生命对象,为解析二进制协议(protocol)消息而创建。UPD:在这两种情况下,对象的数量是相同的,只是分配的大小发生了变化(随机vs.总是1024)。在C++中,由于碎片化和C++的新性能,这很重要。但是在C#中.... 最佳答案 Willitimproveoperatornewo