默认情况下,log4net是一种同步日志记录机制,我想知道是否有办法使用log4net进行异步日志记录?
我最近在VS 2015中从SQL Server数据库项目导入数据库时遇到了麻烦.希望这对一些人有所帮助.当我的代表更高时,我会添加更多图片.
我得到的错误: 不支持服务器版本或数据库兼容级别.
这是我右键单击项目并尝试导入数据库时出现的错误.导入错误:

我们正在尝试在我们的客户端中使用用户确定(在设置屏幕上)可选的gzip压缩HttpClient,因此我们可以在一段时间内记录和比较多个不同呼叫的性能.我们的第一次尝试是简单地有条件地添加标题如下:
HttpRequestMessage request = new HttpRequestMessage(Method, Uri);
if (AcceptGzipEncoding)
{
_client.DefaultRequestHeaders.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("gzip"));
}
//Send to the server
result = await _client.SendAsync(request);
//Read the content of the result response from the server
content = await result.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
这创建了正确的请求,但是gzipped响应在返回时没有解压缩,导致响应乱码.我发现我们必须HttpClientHandler在构建时包括HttpClient:
HttpClient _client = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip
});
Run Code Online (Sandbox Code Playgroud)
这一切都运行良好,但我们想要更改客户端是否在运行时发送Accept-Encoding: gzip标头,并且似乎没有任何方式来访问或更改它传递给构造函数后.此外,如果对象的头部定义,则更改对象的头部对请求的头部没有任何影响.HttpClientHandlerHttpClientHttpRequestMessageHttpClientHandler
是否有任何方法可以在不重新创建HttpClient每次更改的情况下执行此操作?
编辑:我也试着修改为基准HttpClientHandler来改变AutomaticDecompression在运行,但是这是引发此异常:
此实例已启动一个或多个请求.只能在发送第一个请求之前修改属性.
我在VS 2017 v15.4.0预览版3中有一个项目,不久之前,我发布了启用了Application Insights的Azure Web服务.我已经从Azure门户删除了Web服务及其相关的AI资源,但是现在Visual Studio报告了以下错误:
该帐户无权访问Application Insights资源"<resourcename>".请选择有权访问reseource的帐户:
我可以解雇它,但它会继续每天弹出一两次.我在哪里取消配置?
azure visual-studio azure-application-insights visual-studio-2017
我的申请中有员工名单。每个员工都有名字和姓氏,所以我有一个元素列表,例如:
["Jim Carry", "Uma Turman", "Bill Gates", "John Skeet"]
Run Code Online (Sandbox Code Playgroud)
我希望我的客户具有使用模糊搜索算法按名称搜索员工的功能。例如,如果用户输入“ Yuma Turmon”,则将返回最接近的元素“ Uma Turman”。我在这里找到Levenshtein距离算法。
static class LevenshteinDistance
{
/// <summary>
/// Compute the distance between two strings.
/// </summary>
public static int Compute(string s, string t)
{
int n = s.Length;
int m = t.Length;
int[,] d = new int[n + 1, m + 1];
// Step 1
if (n == 0)
{
return m;
}
if (m == 0)
{
return n;
}
// Step 2
for …Run Code Online (Sandbox Code Playgroud) 我有一个任意定义的JSON文档,并且希望能够对属性应用白名单过滤器之类的JSONPath表达式:保留所有选定节点及其祖先回到根节点,所有其他节点均被删除。如果节点不存在,我应该以空文档结尾。
似乎没有与JSON.Net中内置的类似的东西,并且我在任何地方都找不到类似的示例,所以我建立了自己的示例。我选择将选定的节点复制到新建文档中,而不是尝试删除所有不匹配的节点。鉴于可能存在多个匹配项并且文档可能很大,因此需要能够有效地将多个选择结果合并到单个树/ JSON文档中。
我的尝试有点奏效,但结果却很奇怪。该过程涉及一种MergedAncestry对SelectTokens结果进行迭代,调用的方法GetFullAncestry(将其递归地构建到该节点的树),然后合并结果。不过,似乎JArrays的合并发生在错误的级别,如下面的“实际结果”所示。
我的问题:
码:
public static void Main()
{
string json = @"..."; // snipped for brevity - see DotNetFiddle: https://dotnetfiddle.net/wKN1Hj
var root = (JContainer)JToken.Parse(json);
var t3 = root.SelectTokens("$.Array3B.[*].Array3B1.[*].*");
// See DotNetFiddle for simpler examples that work
Console.WriteLine($"{MergedAncestry(t3).ToString()}"); // Wrong output!
Console.ReadKey();
}
// Returns a single document merged using the full ancestry of each of the input tokens
static JToken MergedAncestry(IEnumerable<JToken> tokens)
{
JObject merged …Run Code Online (Sandbox Code Playgroud) 我有一个 .Net Core 项目,它注册了许多单例,如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddLogging();
services.AddSingleton<IConfiguration>(Configuration);
services.AddSingleton<IDbFactory, DefaultDbFactory>();
services.AddSingleton<IUserRepository, UserRepository>();
services.AddSingleton<IEmailService, EmailService>();
services.AddSingleton<IHostedService, BackgroundService>();
services.AddSingleton<ISettingsRepository, SettingsRepository>();
services.AddSingleton(typeof(TokenManager));
var sp = services.BuildServiceProvider();
var userRepository = sp.GetService<IUserRepository>();
// ...
}
Run Code Online (Sandbox Code Playgroud)
这是注册这些类的唯一地方,在任何地方都没有创建其他实例,但是我注意到构造函数被调用了两次。这是为什么?
c# singleton dependency-injection service-locator asp.net-core-2.0