小编Min*_*ata的帖子

.net核心中的GZIP无法正常工作

我正在尝试将Gzip中间件添加到我的ASP.net核心应用程序中.

我添加了以下包:

"Microsoft.AspNetCore.ResponseCompression":"1.0.0"

在我的startup.cs for Configure Services方法中,我有以下内容:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Fastest);
    services.AddResponseCompression(options =>
    {
        options.Providers.Add<GzipCompressionProvider>();
    });

    services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)

在我的Configure方法中,我有以下内容:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseResponseCompression();
    app.UseMvc();
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试加载页面时,它不会像压缩Gzip那样通过.我已经使用了字符串响应和输出视图.chrome中的响应标头如下所示:

在此输入图像描述

我在视觉工作室开发的Windows机器上.运行应用程序时,我尝试从Visual Studio(通过F5)运行,并从命令行使用"dotnet run"命令.既没有输出GZip压缩.

c# asp.net .net-core asp.net-core

19
推荐指数
5
解决办法
6946
查看次数

Azure ServiceBus AutoRenewTimeout

我通过.net SDK使用Azure ServiceBus队列.OnMessageHandler/OnMessageOptions上有一个名为"AutoRenewTimeout"的标志,但似乎对这个值的实际含义感到困惑.

在这里的官方文档https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.onmessageoptions.aspx它建议AutoRenewTimeout应该大于队列锁定.

获取或设置自动续订锁定的最长持续时间.该值应大于最长的消息锁定持续时间; 例如,LockDuration属性.

这似乎表明AutoRenewTimeout或多或少是处理消息所需的最长时间.例如,如果您的锁定持续时间为1分钟,并且自动续订时间为5分钟,则该消息将在放弃之前更新总共5次并再次在队列中显示.还有其他StackOverflow答案确认这种情况,例如/sf/answers/2523598591/

要处理长消息处理,您应该设置AutoRenewTimeout == 10分钟(在您的情况下).这意味着每次LockDuration过期时,锁定将在这10分钟内更新.

因此,例如,如果您的LockDuration为3分钟且AutoRenewTimeout为10分钟,则每3分钟锁定将自动续订(3分钟,6分钟和9分钟后),并且自消息消耗后12分钟后锁定将自动释放.

然而,在更多的研究中,我偶然发现了一条旧的推文(https://twitter.com/clemensv/status/649940087267041284),看起来是微软消息传递的首席架构师.在这条推文中,似乎暗示AutoRenewTimeout是调用"RenewLock"方法的间隔.

它是在回调处于活动状态时在消息上调用https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.renewlock.aspx的时间间隔

因此,例如,如果你的锁定是1分钟,AutoRenewTimeout应该是30秒,以确保在释放之前更新消息锁定.

在我自己的测试中,我倾向于前者是正确的,但推文让我怀疑的事实可能我不知道充分利用AutoRenewTimeout

c# azure azureservicebus

12
推荐指数
1
解决办法
3711
查看次数

Winform DatagridView数字列排序

我只使用一个简单的DataGridView来保存一堆数据(搞笑).

我在特定列中有小数.但是当按照那个十进制列排序时,它会错误地命令它.例如 :

开始订单可能是:

  • 0.56
  • 3.45
  • 500.89
  • 20078.90
  • 1.56
  • 100.29
  • 2.39

结束顺序是:

  • 0.56
  • 100.29
  • 1.56
  • 20078.90
  • 2.39
  • 3.45
  • 500.89

如您所见,它从第一个数字开始对其进行排序.然后以这种方式命令它.

我想可能我可以将列设置为不同的"ColumnType",并且可以自动执行此操作.但是没有"数字"或"十进制"列类型.

我在MSDN上查找问题,我可以找到可以在DataGridView上使用的"排序"方法.但是解释有点过头了,示例没有使用数字,只有文字,所以我无法看到我应该如何切换.

任何帮助将非常感激.

c# datagridview winforms

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

数据绑定对象列表到WinForms DataGridView,但不显示某些公共属性

我甚至不确定我是否正确地这样做了.但基本上我有一个由类构建的对象列表.从那里,我将列表绑定到Windows窗体上的数据网格视图(C#)

从那里,它在datagrid视图中显示对象的所有公共属性.但是,我仍然需要从我的应用程序的其他部分访问一些属性,但实际上并不需要在DataGridView中可见.

那么有一个属性或类似的东西,我可以在属性上面写,以排除它显示.

PS Im在运行时绑定.所以我无法通过设计师编辑列.

PPS请不要只是公共变量的答案(虽然这是唯一的方法,让我知道:)).

c# data-binding datasource datagridview winforms

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

C#7.2关键字性能

我试图测试添加到C#中的"in"关键字的性能(或者不是).in关键字应该能够将值类型的只读引用传递给方法,而不是先将值复制然后传入.

通过绕过这个副本,应该更快,但在我的测试中它似乎没有任何更快.

我正在使用BenchMarkDotNet来对我的代码进行基准测试.代码如下:

public struct Input
{
    public decimal Number1 { get; set; }
    public decimal Number2 { get; set; }
}

public class InBenchmarking
{
    const int loops = 50000000;
    Input inputInstance;

    public InBenchmarking()
    {
        inputInstance = new Input
        {
        };
    }

    [Benchmark]
    public decimal DoSomethingRefLoop()
    {
        decimal result = 0M;
        for (int i = 0; i < loops; i++)
        {
            result = DoSomethingRef(ref inputInstance);
        }
        return result;
    }

    [Benchmark]
    public decimal DoSomethingInLoop()
    {
        decimal result = 0M;
        for …
Run Code Online (Sandbox Code Playgroud)

c# performance benchmarking

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

ElasticSearch 中现有字段的完成建议

在我的 elasticsearch 索引中,我索引了一堆工作。为简单起见,我们只说它们是一堆职位。当人们在我的搜索引擎中输入职位时,我想“自动完成”可能的匹配。

我在这里调查了完成建议:http : //www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-completion.html

但是,我发现的所有示例都涉及在索引上创建一个新字段,并在编制索引/河流时手动填充该字段。

有没有办法在现有领域有一个完成建议?即使这意味着重新索引数据也没关系。例如,当我想保留原始的 not_analysis 文本时,我可以在映射中执行以下操作:

"JobTitle": {
    "type": "string",
    "fields": {
        "Original": {
            "type": "string",
            "index": "not_analyzed"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能与建议者有关吗?

如果没有,是否可以进行非空白标记化/N-Gram 搜索来获取这些字段?虽然它会更慢,但我认为这会奏效。

lucene elasticsearch

4
推荐指数
1
解决办法
1779
查看次数

从Powershell将环境变量保存回Team City

我们需要定期,我们将运行构建配置,其中包括重新创建令牌/登录等.我们希望将这些作为环境变量保存回Team City.我们随后执行的构建将要查看此Environment Variable存储,并根据需要在我们的配置中执行字符串替换.

我看了看:

##teamcity[setParameter name='env.TEST' value='test']
Run Code Online (Sandbox Code Playgroud)

但是从阅读文档来看,这仅用于在同一构建中的构建步骤之间传递变量.它实际上并没有将变量保存回Team City.

是否有任何方法(最好来自powershell脚本),调用Team City并告诉它添加环境变量(或任何其他变量).

powershell teamcity

2
推荐指数
1
解决办法
756
查看次数