这是我第一次使用NLog软件包进行日志记录,但到目前为止,它非常适合使用.
在我的场景中,我需要以编程方式初始化我的NLog LoggingConfiguration设置,而不是通过更典型的配置文件方案.我已经对它进行了测试,并将其全部按照默认方式运行.但是,如何在运行时以编程方式修改我的设置?这里最常见的情况可能是默认情况下应用程序的日志记录级别设置为ERROR,但在特定模块中出现错误,我希望将日志记录级别切换为更加冗长以跟踪错误.我想编写一个小的Web界面,以便我可以在运行时轻松调整这些设置,但我想确保我采用正确的方法.
我有一个XML文档,其中包含一系列项目节点,如下所示:
<data>
<item>
<label>XYZ</label>
<description>lorem ipsum</description>
<parameter type="id">123</parameter>
<parameter type="name">Adam Savage</parameter>
<parameter type="zip">90210</parameter>
</item>
</data>
Run Code Online (Sandbox Code Playgroud)
我想将它LINQ成一个匿名类型,如下所示:
var mydata =
(from root in document.Root.Elements("item")
select new {
label = (string)root.Element("label"),
description = (string)root.Element("description"),
id = ...,
name = ...,
zip = ...
});
Run Code Online (Sandbox Code Playgroud)
根据"类型"属性的值拉取每个参数类型的最佳方法是什么?由于有很多参数元素,你root.Elements("parameter")
最终会收集它们.我能想到的最好的方法是通过下面的方法,但我觉得必须有更好的方法吗?
(from c in root.Descendants("parameter") where (string)c.Attribute("type") == "id"
select c.Value).SingleOrDefault()
Run Code Online (Sandbox Code Playgroud) 在对MEF进行一些研究后,我遇到了根据MSDN 的CreationPolicy.Shared属性:
指定CompositionContainer将创建关联ComposablePart的单个共享实例,并由所有请求者共享.
听起来不错,只要我始终确保只有一个容器访问我使用此策略导出的类.那么我该如何确保只有一个容器可以访问我的导出类型呢?这是我的场景:
我有一个Windows服务需要利用类似单一类的内存数据.数据是非持久性的,所以我希望每当服务启动时都会重新创建它,但是一旦服务停止它就没有用处.我的服务中的多个线程需要以线程安全的方式读取和写入此对象,因此我的初始计划是继承ConcurrentDictionary以确保针对它的线程安全操作.
将要攻击这个类的线程都是从一个抽象基类继承的,所以有没有办法让这个类(只有这个类)从MEF导入它并按照我想要的方式工作?
感谢您提供的任何提示,我对MEF很新,所以我还在学习细节
有时,我们需要在 AWS S3 中将大文件从一个存储桶复制到另一个存储桶。只要有可能,我们就使用 CopyRequest 来处理所有在 AWS 上的操作(因为不需要返回客户端的往返)。但有时我们没有选择这样做,因为我们需要在 2 个完全独立的帐户之间复制,这需要GET和PUT。
问题:
所以基本上我需要一个可以同时读/写的中间流,基本上我会从响应流中读取一个块并将其写入我的中间流,同时 PUT 请求正在读出内容,它只是一个无缝直通类场景。
我在 stackoverflow 上发现了这篇文章,起初看起来很有希望,但它仍然会抛出 OutOfMemory 异常,其中包含大文件。
有人曾经做过类似的事情吗?你会如何处理?提前致谢
我们有一个场景,我们需要我们的用户能够使用与当前登录时不同的域启动SQLServer并对其进行身份验证.所以要澄清这个设置的方式:
我们发现从命令行运行它将起作用:
RUNAS /user:REMOTEDOMAIN\AUserName /netonly "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe
Run Code Online (Sandbox Code Playgroud)
它将提示"输入REMOTEDOMAIN\AUserName:的密码:",如果您提供了正确的密码,SSMS将启动并可以连接到远程dbs.但是,当我尝试在C#中使用更好的界面做同样的事情时,我得到"登录失败:未知用户名或密码错误",这是我的代码:
System.Security.SecureString password = new System.Security.SecureString();
foreach(char c in txtPassword.Text.ToCharArray()){
password.AppendChar(c);
}
System.Diagnostics.ProcessStartInfo procInfo = new System.Diagnostics.ProcessStartInfo();
procInfo.Arguments = "/netonly";
procInfo.FileName = @"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"; ;
procInfo.Domain = "REMOTEDOMAIN";
procInfo.Verb = "runas";
procInfo.UserName = txtUsername.Text;
procInfo.Password = password;
procInfo.UseShellExecute = false;
System.Diagnostics.Process.Start(procInfo);
Run Code Online (Sandbox Code Playgroud)
我尝试使用带有和没有域预先填写的用户名,但都不起作用.有人试图做类似的事吗?谢谢
我有一个遇到此问题的Windows服务。
Version : v4.0.30319
CLR Header: 2.5
PE : PE32+
CorFlags : 0x1
ILONLY : 1
32BITREQ : 0
32BITPREF : 0
Signed : 0
Run Code Online (Sandbox Code Playgroud)
我什至尝试使用32BITREQ-
和32BITPREF-
标志运行Corflags以确保将其设置为应该的值,但没有骰子。在taskManager中,它显示为:
MyServiceName(32位)
该服务与Topshelf 3.0一起安装,并且在Windows Server 2012 R2 Standard上运行。这里发生了什么?
使用 .NET Core,在 Startup.cs 中,您可以访问 IHostingEnvironment,您可以从中获取 EnvironmentName,它对应于在服务器上设置的 ASPNETCORE_ENVIRONMENT 环境变量的值。这对于打开/关闭各种功能以及使用特定于环境的配置非常有用。但是对于一个全是 React.JS 的前端,有没有办法向下传递这个值,以便前端也知道它的环境?我可以想到一些可能的方法来完成,但它们看起来有点笨拙。这方面的最佳做法是什么?
我想通过函数自定义我的测试组,所以我使用nunit Category属性,如下所示:
[Test, Category("Cat1")]
public void SomeMethod() { }
[Test, Category("Cat2")]
public void AnotherMethod() { }
Run Code Online (Sandbox Code Playgroud)
但是在Visual Studio中,类别没有显示,我看到的只是按持续时间或测试结果分组的默认值.我正在使用:
我错过了什么?这似乎应该是一个明智的选择
要将控制器标记为需要授权,通常可以像这样装饰它:
[Authorize]
public class MyController : Controller
Run Code Online (Sandbox Code Playgroud)
我们的身份验证是通过第三方提供商进行的,并且考虑到它的设置方式,我们只希望它在我们的生产环境中实际生效,我们不希望它在 QA 环境中处于活动状态。在 Startup.cs 文件中关闭环境很容易,但是有没有办法有条件地装饰控制器?我开始研究政策和角色,看起来可能会被黑客入侵,但有更好的方法吗?
假设我有一个名为MyClass的类,它有两个属性(int Id和一个字符串Name).我想从另一个集合中填充这些MyClass对象的List,但我只想要唯一的.这个其他集合是第三方对象,它有一个名为'Properties'的属性,它只是一个值数组,前两个对应于我关心的Id和Name值.这个系列可能有重复,所以我只想要独一无二的.
似乎这应该做的伎俩,但它没有,它返回所有项目,无论欺骗.我在这做错了什么?
List<MyClass> items = (from MyClass mc in collectionOfProps
select new MyClass() {
Id = collectionOfProps.Properties[0],
Name = collectionOfProps.Properties[1] }).Distinct().ToList();
Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×4
linq ×2
64-bit ×1
asp.net ×1
asp.net-core ×1
controller ×1
corflags ×1
io ×1
javascript ×1
logging ×1
mef ×1
nlog ×1
nunit ×1
process ×1
reactjs ×1
service ×1
unit-testing ×1
windows ×1
xml ×1