我从 Docker 那里得到了一些奇怪的行为,我找不到任何地方提到它。它似乎是随机跳过阶段,即使是我简单地从网上论坛复制粘贴的多阶段 Dockerfile。
我的 dockerfile 是:
FROM alpine as base
RUN echo "1"
# SKIPPED
FROM base as mid
RUN echo "2"
FROM base as final
RUN echo "3"
Run Code Online (Sandbox Code Playgroud)
输出:
docker build -t test .\ --no-cache
[+] Building 2.0s (7/7) FINISHED
=> [internal] load .dockerignore 0.0s
=> => transferring context: 34B 0.0s
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 143B 0.0s
=> [internal] load metadata for docker.io/library/alpine:latest 1.3s
=> CACHED [base 1/2] FROM docker.io/library/alpine@sha256:... …Run Code Online (Sandbox Code Playgroud) 我对 Application Insights 完全是个菜鸟,遗憾的是,经过一整天的尝试,我根本无法让它工作。我尝试使用以下代码:
this.telemetryClient = new TelemetryClient(TelemetryConfiguration.CreateDefault());
this.telemetryClient.TrackTrace($"Test", Microsoft.ApplicationInsights.DataContracts.SeverityLevel.Warning);
Run Code Online (Sandbox Code Playgroud)
但是,当我转到应用程序洞察窗口并显示当前调试会话中的所有遥测数据时,没有记录任何内容。一位用户说缺少 ApplicationInsights.config 文件(一个空的文件可以很好地进行调试),我创建了一个但它没有任何改变。
然后我尝试了我能找到的最简单的控制台应用程序 - https://docs.microsoft.com/en-us/azure/azure-monitor/app/console。我没有检测密钥,从我今天阅读的数百个论坛来看,如果您将其留空,它仍应出现在调试遥测中。唉,Application Insights 中仍然没有任何内容。
我怎样才能让它工作?我只想在查询“调试遥测”时在 Visual Studio Application Insights 窗口中看到一条 Trace 消息。
我有以下代码:
public const int ThreadLimitMax = 128;
private static object setThreadLimitLock = new object();
private static SemaphoreSlim totalThreadLimiter = new SemaphoreSlim(ThreadLimit, ThreadLimitMax);
public static int ThreadLimit { get; private set; } = 128;
public static async Task SetThreadLimit(int max)
{
if (max > ThreadLimitMax)
throw new ArgumentOutOfRangeException(nameof(max), $"Cannot have more than {ThreadLimitMax} threads.");
if (max < 1)
throw new ArgumentOutOfRangeException(nameof(max), $"Cannot have less than 1 threads.");
lock (setThreadLimitLock)
{
int difference = Math.Abs(ThreadLimit - max);
if (max < ThreadLimit)
{ …Run Code Online (Sandbox Code Playgroud)