小编pcd*_*dev的帖子

如何为log4net创建异步包装?

默认情况下,log4net是一种同步日志记录机制,我想知道是否有办法使用log4net进行异步日志记录?

c# log4net

30
推荐指数
5
解决办法
2万
查看次数

在VS 2015 SQL Server数据库项目中导入数据库

我最近在VS 2015中从SQL Server数据库项目导入数据库时​​遇到了麻烦.希望这对一些人有所帮助.当我的代表更高时,我会添加更多图片.

我得到的错误: 不支持服务器版本或数据库兼容级别.

这是我右键单击项目并尝试导入数据库时​​出现的错误.导入错误:

sql-server-data-tools visual-studio-2015

27
推荐指数
1
解决办法
7998
查看次数

HttpClient:在运行时有条件地设置AcceptEncoding压缩

我们正在尝试在我们的客户端中使用用户确定(在设置屏幕上)可选的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在运行,但是这是引发此异常:

此实例已启动一个或多个请求.只能在发送第一个请求之前修改属性.

c# gzip .net-4.5 dotnet-httpclient winrt-async

9
推荐指数
3
解决办法
2万
查看次数

VS2017 - 应用程序洞察:该帐户无权访问AI资源

我在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

8
推荐指数
1
解决办法
1051
查看次数

实现反向字符串组合的Levenstein距离?

我的申请中有员工名单。每个员工都有名字和姓氏,所以我有一个元素列表,例如:

["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)

c# search levenshtein-distance

6
推荐指数
1
解决办法
90
查看次数

使用JSONPath过滤JSON文档中的属性

我有一个任意定义的JSON文档,并且希望能够对属性应用白名单过滤器之类的JSONPath表达式:保留所有选定节点及其祖先回到根节点,所有其他节点均被删除。如果节点不存在,我应该以空文档结尾。

似乎没有与JSON.Net中内置的类似的东西,并且我在任何地方都找不到类似的示例,所以我建立了自己的示例。我选择将选定的节点复制到新建文档中,而不是尝试删除所有不匹配的节点。鉴于可能存在多个匹配项并且文档可能很大,因此需要能够有效地将多个选择结果合并到单个树/ JSON文档中。

我的尝试有点奏效,但结果却很奇怪。该过程涉及一种MergedAncestrySelectTokens结果进行迭代,调用的方法GetFullAncestry(将其递归地构建到该节点的树),然后合并结果。不过,似乎JArrays的合并发生在错误的级别,如下面的“实际结果”所示。

我的问题:

  1. 是否有更好/更快/内置的方法来实现这一目标?
  2. 如果没有,我在做什么错?

码:

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)

c# json.net jsonpath

6
推荐指数
1
解决办法
137
查看次数

不能在没有被实例化两次的情况下在 ConfigureServices 中使用注册的单例

我有一个 .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

5
推荐指数
1
解决办法
3612
查看次数