小编Dav*_*bbo的帖子

流文本数据时禁用Chrome缓冲

我们有一个网站,可通过http流文本数据。它是通过以下方式设置的:

  • 它不做任何服务器端缓冲
  • Content-Typetext/plain
  • Transfer-Encodingchunked
  • 压缩被禁用

当使用纯curl文本或FireFox时,文本从第一个字节流到浏览器。但是,使用Chrome浏览器时,在发送1024个字节之前不会显示任何文本。之后,一切都会立即显示出来。

问题:有没有办法禁用这种缓冲行为?

更多信息:这是一个简单的ASP.NET页面,演示了该行为:

<%@ language=c# %>

<%
    Response.BufferOutput = false;
    Response.ContentType = "text/plain";

    for (int i=0; i<50; i++)
    {
        Response.Write("01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567\r\n");
        System.Threading.Thread.Sleep(1000);
    }
%>
Run Code Online (Sandbox Code Playgroud)

使用禁用压缩的web.config:

<configuration>
    <system.webServer>
        <urlCompression doStaticCompression="false" doDynamicCompression="false"/>
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我还在http://bufferingtest.azurewebsites.net/上运行了一个实时repro 。只需从Chrome和FireFox两者中点击它,即可观察到不同的行为。

streaming google-chrome http

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

使用重写规则将http重定向到https时,AlwaysOn功能无法正常工作

我有一个Azure PaaS实例在Tomcat8容器中运行Spring-Boot打包的"war".问题是,经过一段时间的活动后,"java"进程被终止.

在此输入图像描述

上面的图片是tomcat进程未被杀死时的样子.

只有当我再次向服务器发出任何类型的请求时,tomcat进程才会再次启动.

如果我的理解是正确的,标志'WEBSITE_SCM_ALWAYS_ON_ENABLED'是为了让实例保持活跃,即'w3wp'进程,而不是Tomcat.

解决此问题的一个方法是使用简单的"运行状况"请求"轮询"我的服务器以使其保持活动状态.

如果它的'httpPlatformHandler'有一些Azure配置或Spring-boot配置会更好,这样我就可以防止它进入睡眠状态.

任何帮助表示赞赏.

****更新****

在@DavidEbbo的进一步帮助下,问题被追溯到我从"http"到"https"网址的URL"重写"规则."AlwaysOn"请求在HTTP(端口80)上,因此每当命中Azure请求时,它都会获得重定向(301)作为响应.仍在等待解决方案.

spring tomcat azure azure-web-sites spring-boot

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

部署到Azure后的编译器错误

我有一个使用队列,存储和表的云服务,该服务具有Web角色和辅助角色。我将其发布到Azure,一切似乎都很好。当我单击Web应用程序URL时,出现以下错误:

编译器错误消息:编译器失败,错误代码-2146232576。

如果我在本地部署Web应用程序,一切正常!有谁可以帮助我吗?我尝试在网上查找,但找不到解决方案,对此我很陌生。

asp.net compiler-errors azure asp.net-mvc-4

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

使用动态变量时可以指定泛型参数吗?

请考虑以下代码:

class Program {
    void Foo<T>() { }

    static void Main(string[] args) {
        dynamic p = new Program();
        p.Foo();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,对p.Foo()的调用无效,因为动态绑定器无法知道要用于T的类型.具体的失败是:

" 无法从用法中推断出方法'ConsoleApplication1.Program.Foo()'的类型参数.请尝试明确指定类型参数. "

现在我的问题是:有没有办法指定泛型类型,或者这种方法是不是可以使用'dynamic'来调用?

c# generics dynamic

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

如何使用IL Emit定义彼此引用的两种类型

我需要使用反射Emit来定义这样的东西:

public class Foo {
    public Bar Bar { get; set; }
}

public class Bar {
    public Foo Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

困难在于,当调用TypeBuilder.DefineProperty()时,我需要传递属性的返回值的System.Type,该值尚不存在.如果参考只采用一种方式,那将很容易,但两种方式都会导致鸡和蛋的问题.

我希望找到一个带有TypeBuilder而不是Type的重载,这可以让我同时定义这两个类,然后在两端调用TypeBuilder.CreateType().但我没有看到这样的事情.

解决这个问题的正确方法是什么?

c# reflection.emit

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

WebRequest不会在同一进程中提供缓存项

我们看到一种奇怪的行为,即在创建新进程之前,缓存中无法使用WebRequest API缓存(在IE/wininet缓存中)缓存的内容.

请考虑以下代码:

using System;
using System.IO;
using System.Net;
using System.Net.Cache;
using System.Threading;

namespace HttpCachingTest {
    class Program {
        static void Main(string[] args) {
            MakeRequest();
            Thread.Sleep(1000);
            MakeRequest();
        }

        private static void MakeRequest() {
            var request = (HttpWebRequest)WebRequest.Create("http://a0.twimg.com/a/1286210883/images/twitter_logo_header.png");
            request.CachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.Default);

            var response = (HttpWebResponse)request.GetResponse();
            Console.WriteLine(String.Format("IsFromCache: {0}, ContentLength: {1}", response.IsFromCache, response.ContentLength));

            using (var fileStream = File.OpenWrite("test.jpg")) {
                response.GetResponseStream().CopyTo(fileStream);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们看到的行为是,对于第二个请求,IsFromCache为false.但是,如果我们第二次运行应用程序,则IsFromCache为true.这意味着事物被正确缓存,但那些刚刚缓存的东西对当前进程不可用,这没什么意义.

任何人都可以解释这种行为,并知道如何修复它,以便缓存的项目可以立即被击中?

c# webrequest httpwebrequest

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

使用PowerShell处理JSON字符串

假设我在PowerShell字符串中有一段JSON,例如

$s = '{"foo":"hello"}'
Run Code Online (Sandbox Code Playgroud)

我的目标是将其转换为我可以操作的对象(例如,更改/添加属性),然后转换回json字符串.

所以试着显而易见,我写道:

$o = $s | ConvertFrom-Json    # convert the json string to an object
$o.foo = "hello2"             # change an existing prop
$o.bar = "World"              # add a new prop
$s2 = $o | ConvertTo-Json     # convert back into a json string
Run Code Online (Sandbox Code Playgroud)

问题是我从中返回的对象ConvertFrom-Json是类型PSCustomObject,不允许添加属性.所以第3行爆发了:

Exception setting "bar": "The property 'bar' cannot be found on this object. Verify that the property exists and can be set." At line:1 char:1

问题:在没有带来太多复杂性的情况下,最好的方法是什么?

powershell json

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

将过滤器条目添加到 git 配置文件

如果我运行:

git config foo.bar hello
Run Code Online (Sandbox Code Playgroud)

它将以下内容添加到我的 repo 的本地 .git\config 文件中:

[foo]
    bar = hello
Run Code Online (Sandbox Code Playgroud)

但是现在假设我想将以下内容添加到相同的配置中(这是lfs使用的内容,但这超出了重点):

[filter "lfs"]
  clean = git-lfs clean %f
  smudge = git-lfs smudge %f
  required = true
Run Code Online (Sandbox Code Playgroud)

问题:是否有一个 git 命令可以添加这个?

我无法在git config这里工作,因为密钥需要类似于filter "lfs".clean它不被视为有效密钥的东西。

git

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