小编Tod*_*ams的帖子

.NET CLI如何在Linux上发布后运行应用程序

我花了大约4个小时调查,仍然无法找到如何运行已发布的应用程序(dotnet publish)

现在,我可以下载源到我的远程机器,然后调用dotnet builddotnet run-然后我的应用程序运行的预期.但我想在没有源文件的情况下将DLL(或*.so?)发布到我的VPS.

官方文档说什么?在project.json中定义命令

"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://unix:/var/aspnet/HelloMVC/kestrel.sock",
}
Run Code Online (Sandbox Code Playgroud)

但它是obsolette,不是吗?

那么默认样品呢?

在默认的VS2015示例解决方案中,他们使用的是publish-iis,完整的.NET框架和IIS服务器,但是没有关于Linux上的部署.

postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
Run Code Online (Sandbox Code Playgroud)

这是我的dotnet信息

.NET Command Line Tools (1.0.0-preview1-002702)

Product Information:
 Version:     1.0.0-preview1-002702
 Commit Sha:  6cde21225e

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.10586
 OS Platform: Windows
 RID:         win10-x64
Run Code Online (Sandbox Code Playgroud)

.NET Core RC2

asp.net-core-mvc .net-core .net-core-rc2

11
推荐指数
1
解决办法
6115
查看次数

context.Get()和它的通用版本之间有什么区别?

我正在努力熟悉OWIN,有很多让我感到困惑的事情.例如,在部分startup.cs类中,我通过注册上下文回调

app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
Run Code Online (Sandbox Code Playgroud)

有什么不同?为什么我们需要这种通用方法?

我可以得到这样的上下文:

context.Get<ApplicationDbContext>())
context.GetUserManager<ApplicationUserManager>()
Run Code Online (Sandbox Code Playgroud)

Get和GetUserManager方法有什么区别?为什么我不能只调用context.Get for ApplicationUserManager?

asp.net owin katana asp.net-identity

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

System.Progress错误的调用顺序

我正在尝试使用HttpClient显示下载进度.为此,我使用System.Progress<T>.代码如下所示:

long totalRead = 0L;
var buffer = new byte[1024];
bool isMoreToRead = true;
ulong total = (ulong)response.Content.Headers.ContentLength;

while (isMoreToRead)
{
    int read = await stream.ReadAsync(buffer, 0, buffer.Length);
    if (read == 0)
        isMoreToRead = false;
    else
    {
        var data = new byte[read];
        buffer.ToList().CopyTo(0, data, 0, read);
        totalRead += read;
        progress.Report((int) (totalRead*1d / total * 1d * 100) );
    }
}
Run Code Online (Sandbox Code Playgroud)

假设订阅看起来像这样:

var progress = new Progress<int>();
progress.ProgressChanged += (sender, i) => Console.WriteLine(i);
client.Download(file, progress).Wait();
Run Code Online (Sandbox Code Playgroud)

但结果是,进度顺序不一致,如:10,20,30,70,15,90,100,80.

这是默认委托的行为,还是有另一个原因?

.net c# delegates

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

我可以从后台线程更新UI,为什么?

大家都知道,不允许从后台线程更新UI(或不?)

我做了一个小实验.这是一段代码:

var thread = new Thread(() => progressBar1.Increment(50));
            thread.IsBackground = true;
            thread.Start();
            thread.Join();
Run Code Online (Sandbox Code Playgroud)

我将此代码放在一些按钮单击处理程序中.知道吗?我的进度条正在递增...从后台线程.现在我很困惑.我不明白它是如何可能的以及我做错了什么

.net c# multithreading winforms

4
推荐指数
2
解决办法
611
查看次数

Nginx-Ingress 控制器后面的 Nginx 服务器

我们决定将我们的应用程序从 Service:LoadBalancer 迁移到 Ingress,我选择了Nginx Ingress Controller,因为我很熟悉它,而且它是 Kubernetes 世界中最受欢迎的控制器之一

之前我们有 Nginx => Uwsgi 组合来支持 ELB。我们从源代码编译 nginx,因为我们需要一些 3rd 方模块和 Lua 支持。

ELB => Nginx Server => UWSGI
ELB => Nginx Ingress (Load Balancer) => Nginx (Server) => UWSGI
Run Code Online (Sandbox Code Playgroud)

我的问题是:代理链中可以有 2 个 nginx 吗?

我理解一个是扮演LoadBalancer的角色,另一个就是服务器本身。但对我来说,它伴随着痛苦,就像如果我更改服务器 nginx.conf 中的某些选项,例如将客户端主体的大小增加到 8MB,我应该在 Nginx-Ingress 上执行相同的操作。另外我想知道如何设置超时:因为 ingress=>server 和 server=>uwsgi 之间存在超时,并且一般来说,在请求到达应用程序之前如何在拥有 3 个代理的情况下调整性能?

删除 Nginx Server 以便 Ingress Controller 同时充当服务器和负载均衡器是一个好习惯吗?我们使用的第三方模块怎么样?

load-balancing nginx kubernetes

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