“无法以静默方式获取令牌。 调用方法AcquireToken“

try { ClientCredential clientCredential = new ClientCredential(“***********”,”**************”); UserIdentifier userIdentifier = new UserIdentifier(userObjectId, UserIdentifierType.UniqueId); DiscoveryClient discClient = new DiscoveryClient(SettingsHelper.DiscoveryServiceEndpointUri, async () => { var authResult = await authContext.AcquireTokenSilentAsync(SettingsHelper.DiscoveryServiceResourceId, clientCredential, userIdentifier); return authResult.AccessToken; }); var dcr = await discClient.DiscoverCapabilityAsync(capabilityName); return new OutlookServicesClient(dcr.ServiceEndpointUri, async () => { var authResult = await authContext.AcquireTokenSilentAsync(dcr.ServiceResourceId, clientCredential, userIdentifier); return authResult.AccessToken; }); } […]

编码指南+最佳实践?

我找不到任何直接适用于我的查询的问题,因此我将此作为一个新问题发布。 如果有任何可能对我有帮助的讨论,请指出并结束问题。 题: 我将介绍C#编码指南,但不应限制编码标准。 所以我有一个粗略的想法,但我认为我需要解决良好的编程实践。 所以内容将是这样的。 基本编码标准 – 套管,格式化等 良好实践 – 使用Hashset优于其他数据结构,String vs String Builder,字符串的不变性以及有效地使用它们等 真的,我想添加更多好的做法(特别是为了提高性能。)所以想听听一些与C#一起使用的更好的做法。 有什么建议??? (不需要大的描述:)只是这个想法就足够了。)

log4net BufferingForwardingAppender性能问题

编辑2:我已经解决了问题(请参阅下面的答案)请注意,该问题可能会影响所有使用BufferingForwardingAppender修饰的appender以及从BufferingAppenderSkeletoninheritance的所有appender(分别为:AdoNetAppender,RemotingAppender,SmtpAppender和SmtpPickupDirAppender)* 我正在做一些非常基本的log4net工作台,我试图用BufferingForwardingAppender修饰RollingFileAppender。 我通过BufferingForwardingAppender而不是直接通过RollingFileAppender遇到了糟糕的性能,我真的没有理由。 这是我的配置: 这是基准(非常简单的代码): var stopWatch = new Stopwatch(); stopWatch.Start(); for (int i = 0; i < 100000; i++) { Log.Debug("Hello"); } stopWatch.Stop(); Console.WriteLine("Done in {0} ms", stopWatch.ElapsedMilliseconds); 直接通过RollingFileAppender输出的是: 完成时间为511毫秒 而通过BufferingForwardingAppender装饰RollingFileAppender: 签订于14261毫秒 这大约慢了30倍。 我认为通过在将它们写入文件之前缓冲一定量的日志来获得一些速度,但是由于某种原因它会使事情变得更糟。 在我看来配置是好的,所以这真的很奇怪。 有人知道吗? 谢谢! 编辑1: 通过包装/装饰FileAppender甚至是ConsoleAppender,行为是完全相同的(在log4net官方配置示例中仍然有一个基本的BufferingForwardingAppender包装/装饰ConsoleAppender的例子..并没有具体提到处理性能)。 经过一些调查/分析后,我可以看到大部分时间都在BufferingForwardingAppender中被破坏,更具体地说是在调用WindowsIdentity.GetCurrent()…被调用时我们调用Log.Debug() 。在上一个样本中(上面的示例源中100K次)。 已知对此方法的调用非常昂贵,应该避免或最小化,我真的不明白为什么它会被调用每个日志事件。 我真的完全错误地配置了某些东西/没有看到明显的东西,或者某种错误是某种错误,这就是我现在想要解决的问题…… 部分调用堆栈是: AppenderSkeleton.DoAppend BufferingAppenderSkeleton.Append LoggingEvent.FixVolatileData LoggingEvent.get_UserName() 调用get_LocationInformation()也在FixVolatileData中完成,也会导致高性能(每次捕获堆栈跟踪)。 我现在试图理解为什么这个极其昂贵的FixVolatileData调用(至少对于修复问题)在这个上下文中发生的每个日志事件,而直接通过包装的appender(直接通过ConsoleAppender / FileAppender ..)不会执行这种操作。 即将到来的更新,除非有人得到了所有这些的答案;) […]

MySql连接器6.8.2 RC,entity framework6和代码优先

我最近升级到Entity Framework 6并安装了MySql 6.8.2 RC Connector,因为它表示现在支持EF6 Code First。 请记住,在升级之前,我的项目在连接器6.7.4和EF 5中运行良好。 我对web.config进行了以下更改 我还添加了以下引用(.net 4.5版本) MySql.Data MySql.Data.Entity.EF6 MySql.Web 问题是 – 代码调用我收到的DBContext的那一刻: Object reference not set to an instance of an object. 再次 – 请记住,升级之前一切正常,所以我知道它不是代码问题,但是,我可能没有正确设置web.config? 另外 – 您可能会问,如果在升级之前它运行良好,为什么要升级? 好吧,据说EF6和新的MySql连接器解决了我遇到的一些错误 – 所以我希望现在实现它,而它在开发中,当它转移到生产(几个月后)我应该能够加载6.8.x连接器的生产版本。 这是堆栈跟踪,以防它有用 [NullReferenceException: Object reference not set to an instance of an object.] MySql.Data.MySqlClient.MySqlProviderServices.GetDbProviderManifestToken(DbConnection connection) +85 System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection) […]

如何使用iTextsharp在c#.net中逐行读取带有空格(实际上)的pdf文件

我正在使用iText(for .net)来阅读pdf文件。 它读取文档,但是当有空格时,它只读取一个空格。 这使得无法通过获取子串来提取数据。 我想逐行读取数据空白,所以我知道文本的实际位置,因为我想将数据写入数据库。 该文件是银行对帐单,我想将其转储到数据库中以设计对帐系统, 这是一个文件的屏幕截图 以下是我正在使用的代码 For page As Integer = 1 To pdfReader.NumberOfPages ‘ Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() Dim Strategy As ITextExtractionStrategy = New iTextSharp.text.pdf.parser.LocationTextExtractionStrategy() Dim currentText As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.[Default], Encoding.UTF8, Encoding.[Default].GetBytes(currentText))) Dim delimiterChars As Char() = {ControlChars.Lf} Dim lines As String() = […]

如何获取EF 5中所有实体的列表?

我正在构建一个MVC 4应用程序。 我有一个下拉列表,需要显示所有使用的表(实体).. 我怎样才能做到这一点? 我首先使用EF 5代码配置。 任何帮助,将不胜感激。 谢谢

JSON.Net自定义合同序列化和集合

我正在尝试创建一个IContractResolver来简化我在WebApi项目上的安全处理。 我在尝试什么: 我想基于一组动态条件序列化某些对象/属性(例如,调用端点的用户的角色)。 所以我实现了一个在Interface的CreateProperty覆盖中检查的自定义属性,并将ShouldSerialize函数设置为我自己的逻辑。 我现在的问题是,是否有可能有条件地序列化某个列表中的完整对象? 而不是在预处理步骤中过滤列表(这很容易出错,如果我更改了我的对象),我希望它由当前的ContractResolver递归处理。 在某种程度上,我试图得到这样的东西: override void CreateObject(JSONObject ob){ if ( ob.DeclaringType == MyType) { ob.ShouldSerialize = instance => {[…] }; //Custom Logic } } 我错过了覆盖,这根本不可能吗? 有没有更好的方法来实际做到这一点,而我不必“预先解析”我的所有价值观?

c#在对象构造函数中启动异步方法 – 不好的做法?

我在一个类似的对象构造函数中有一些代码 delegate DataSet MyInvoker; public MyObject(Param1 p1) { // property sets here // … BeginMyAsyncMethod(); } public void BeginMyAsyncMethod() { // set some properties // … MyInvoker inv = new MyInvoker(SomeBeginMethod); inv.BeginInvoke(new AsyncCallback(SomeEndMethod), null); } 我的问题是: 这通常被认为是不好的做法吗? 在我的类中定义一个start方法(用户可以调用它来执行异步操作)会更好(或更好)吗? 这个答案给我的印象是,将它留给用户是不好的做法,虽然我特别谈到在构造函数中启动异步方法,而不是正确构造对象。

有没有使用DDD(域驱动设计)的开源项目?

我正在努力理解DDD背后的概念,但我发现通过阅读书籍很难理解,因为他们倾向于以相当抽象的方式讨论这个主题。 我想在代码中看到一些优秀的DDD实现,最好是在C#中。 在开源世界中有没有很好的DDD项目实例?

如何使用C#连接Google Cloud SQL

我只想使用C#在Google Cloud上管理我的数据库。 我刚开始学习数据库。 PS我不擅长英语。 我希望你能理解我。