草庐IT

c# - 我可以列出所有已注册的事件源吗?

我的Windows服务写入了事件日志,但我在纠正这个问题时遇到了各种问题。所以在这个过程中我用了很多不同的名字。我关注了一篇描述如何在Windows服务中设置事件日志的文章。所以在设计器中添加EventLog组件后,我将其添加到构造函数中:if(!System.Diagnostics.EventLog.SourceExists("AS0604"))System.Diagnostics.EventLog.CreateEventSource("AS0604","SIRR");eventLog1.Source="AS0604";eventLog1.Log="SIRR";eventLog1.W

c# - 当应用程序关闭时,我可以检测到后台线程何时被应用程序杀死吗?

我在C#中使用一个线程,我已将IsBackground属性设置为true。线程在循环中运行一些代码,直到应用程序关闭。当应用程序关闭时,线程也停止执行(因为我设置了IsBackground=true)。应用程序如何终止线程?它似乎不是通过调用中止来完成的,因为我没有得到ThreadAbortException。它发生在幕后吗?我想在循环的finallyblock中做一些回滚。我知道我可以自己在线程上调用abort,但我想知道应用程序如何关闭我的后台线程,以及我是否可以从线程内部对此使用react。我知道我可以订阅Application.ApplicationExit事件,但我在服务和w

c# - 我可以避免存储 MS Exchange 凭据,同时仍然能够进行身份验证(针对 EWS)吗?

我正在构建一个应用程序,用于在用户的ExchangeServer帐户(支持2007-2013版本)和应用程序之间同步数据。应用程序不能使用模拟(至少在典型情况下不能),因为用户可以在任意数量的域和交换服务器上。我知道一开始我将不得不询问他们的用户名/电子邮件地址和密码。但是,如果不需要的话,我真的不想负责存储这些凭据(即使它们是加密的,我也不愿意)。我不确定要问什么问题,所以我要回答这些问题:ExchangeServer如何进行身份验证?用户的凭据是按原样直接发送到服务器,还是在通过网络发送之前一起散列?如果对它们进行哈希处理,我如何获取/生成此哈希值以在后续身份验证中重复使用?Exc

c# - 我可以告诉 CLR 通过引用在 AppDomain 之间编码(marshal)不可变对象(immutable对象)吗?

当在.NET中的AppDomain之间编码(marshal)对象时,CLR将序列化对象(如果它具有Serializable属性)或生成一个代理(如果它继承自MarshalByRef)然而,对于字符串,CLR只会将对字符串对象的引用传递到新的AppDomain中。CLR仍然确保完整性,因为.NET字符串是不可变的,并且第二个AppDomain对字符串的任何更改都不会影响原始对象。这让我想到了我的问题:有没有办法告诉CLR我的自定义类型是不可变的,并且当用于远程处理时,它应该只传递对对象的引用,就像它对字符串类所做的那样? 最佳答案 编

c# - 我可以在 ASP.NET Core 中使用 Content Negotiation 向浏览器返回 View 并向 API 调用返回 JSON 吗?

我有一个返回客户列表的非常基本的Controller方法。我希望它在用户浏览时返回ListView,并将JSON返回给在Acceptheader中具有application/json的请求。在ASP.NETCoreMVC1.0中这可能吗?我已经试过了:[HttpGet("")]publicasyncTaskList(intpage=1,intcount=20){varcustomers=await_customerService.GetCustomers(page,count);returnOk(customers.Select(c=>new{c.Id,c.Name}));}但默认情况

c# - 我可以使用类型化工厂设施返回基于(枚举)参数的实现吗?

不确定这是否可能。我需要根据枚举值返回正确的服务实现。所以手工编码的实现看起来像这样:publicenumMyEnum{One,Two}publicclassMyFactory{publicITypeIWantToCreateCreate(MyEnumtype){switch(type){caseMyEnum.OnereturnnewTypeIWantToCreate1();break;caseMyEnum.TworeturnnewTypeIWantToCreate2();break;default:returnnull;}}}返回的实现具有额外的依赖项,需要通过容器注入(inject

c# - 我可以使用 .NET Core 编写 PowerShell 二进制 cmdlet 吗?

我正在尝试创建一个带有二进制Cmdlet内部结构的基本PowerShell模块,因为仅在PowerShell中编写东西看起来不如在C#中方便。正在关注this指导,看来我必须:添加Microsoft.PowerShell.SDK到我的project.json用必需的属性标记我的cmdlet类使用RootModule编写list文件,针对我的.dll将.dll放在list附近将两者都放在PSModulePath下但是,当我尝试Import-Module时,PowerShell核心提示缺少运行时:Import-Module:Couldnotloadfileorassembly'System

c# - 我可以修改 Request.Form 变量吗?

我尝试Request.Form.Set(k,v)但它抛出异常Collectionisread-only 最佳答案 这与修改Request.Querystring完全一样。两者都因私有(private)属性而在内部变得复杂,并且可以被视为错误,但是我知道有两种可能的解决方案(我会立即取消response.redirect计划-这太糟糕了)。方法一是直接使用反射修改集合:NameValueCollectionoQuery=Request.QueryString;oQuery=(NameValueCollection)Request.Ge

c# - 我可以用这种方式为所有派生的单例定义一个抽象类吗?

这是我的抽象类,每次我想制作一个Singleton时都必须派生它:publicabstractclassSingletonwhereT:Singleton{privatestaticreadonlyLazy_instance=newLazy(()=>{varconstructor=typeof(T).GetConstructor(BindingFlags.NonPublic|BindingFlags.Instance,null,newType[0],null);return(T)constructor.Invoke(null);});publicstaticTInstance{get{

c# - 我可以/应该使用隐式运算符而不是覆盖 ToString 吗?

我有一个类,我想轻松地写出字符串(例如,用于记录目的)。我可以使用隐式运算符将对象隐式转换为字符串而不是重写ToString方法吗?例如,我有一个包含姓名和年龄的Person类:publicclassPerson{publicstringName{get;set;}publicintAge{get;set;}}我可以覆盖ToString:publicoverridestringToString(){returnString.Format("Name:{0},Age:{1}",this.Name,this.Age);}或者我可以使用隐式运算符:publicstaticimplicitop