小编Iva*_*ang的帖子

如何获取刚刚复制到 Azure 存储帐户的 CloudBlockBlob 的大小?

我正在将文件从 Azure 文件共享复制到存储容器中的 CloudBlockBlob。在删除原始文件之前,我想验证两个位置的字节 (.Properties.Length) 是否相同。我认为这是获得对复制的 blob 的新引用的情况,但它始终为 -1。

副本工作正常,对文件 v blob 的目视检查显示字节是相同的,只是不确定如何在我的 C# 应用程序中复制它。

我遇到问题的那一行是定义“复制”对象的那一行。

string myfile = @"junk.txt";

CloudFile sourcefile = 
    fileStorage.Share.GetRootDirectoryReference().GetFileReference(myfile);
CloudBlockBlob destBlob = 
     destStorage.Container.GetBlockBlobReference(myfile);
string fileSAS = sourcefile.GetSharedAccessSignature(new 
    SharedAccessFilePolicy()
{
    Permissions = SharedAccessFilePermissions.Read,
    SharedAccessExpiryTime = DateTime.Now.AddHours(24)
});
Uri fileUri = new Uri(sourcefile.StorageUri.PrimaryUri.ToString() + fileSAS);
CloudBlockBlob destBlob = destStorage.Container.GetBlockBlobReference(file.Path);
destBlob.StartCopy(fileUri);
CloudBlockBlob copied = destStorage.Container.GetBlockBlobReference(myfile);
Run Code Online (Sandbox Code Playgroud)

azure azure-storage azure-storage-blobs azure-files

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

如何在 Azure Application Insights 中查看或筛选记录器名称的跟踪?

当 anILogger被初始化时,我们给它一个名称,通常是类型名称。当通过它写入日志时,该值会清楚地打印到控制台。此外,配置中的严重性过滤通过此名称进行。

但是,我似乎在 Application Insights/Log Analytics 中看不到该名称。它记录了大量我不关心的内容,但似乎错过了这个主要字段。

谢谢

Ivan 要求提供代码和屏幕截图,所以这是我们多年来用来制作命名记录器的标准代码。

var logger = loggerFactory.CreateLogger("EventHub");
logger.LogInformation($"Publishing event '{eventName}' from '{sourceId}'.");
Run Code Online (Sandbox Code Playgroud)

以下是门户中日志(分析)中可用的所有字段。这些都不是记录器名称。在我看来,记录器的名称将位于前五个最有用的字段中。

日志分析字段

再次感谢。

azure azure-application-insights azure-log-analytics

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

运行 web 作业在启动时给出 ArgumentNullException

我正在使用 .NET Framework 开发 Azure webjob,但是当我在本地运行时,启动后出现此异常。

Microsoft.Azure.WebJobs.Host.Listeners.FunctionListenerException:函数的侦听器[Name of function]无法启动。

内部异常:

ArgumentNullException: 值不能为空。
参数名称:connectionString

这是ProgramWeb 作业类中的代码。

static void Main()
{
    HostBuilder builder = new HostBuilder();

    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices();
        b.AddTimers();
    });

    using (IHost host = builder.Build())
    {
        host.Run(); // <-- error happens on this line
    }
}
Run Code Online (Sandbox Code Playgroud)

在里面App.config我添加了接下来的两个连接字符串:

<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=[Name];AccountKey=[Key]" />
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=[Name];AccountKey=[Key]" />
Run Code Online (Sandbox Code Playgroud)

使用[Name][Key]作为来自实时环境的帐户名称 en 键。

此外,当我将连接字符串更改为 时UseDevelopmentStorage=true,我也遇到了相同的异常。

我怎么能解决这个问题?

c# azure azure-webjobs azure-webjobssdk

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

如何在 ILogger 中刷新 Application Insights

我有一个使用应用程序洞察的 Windows 控制台应用程序。我使用Microsoft.Extensions.DependencyInjection来设置我的课程并添加ILogger.

如果出现异常,我想将此记录到 Application Insights。但是由于 Application Insights 不会立即发送跟踪,我想刷新日志。

有没有办法触发应用程序洞察的刷新ILogger

        static async Task Main(string[] args)
        {
            ServiceProvider serviceProvider = ConfigureServices();

            var program = serviceProvider.GetService<Program>();
            await program.Run();
        }

        public Program(ILogger<Program> logger)
        {
            this.logger = logger;
        }

        private static ServiceProvider ConfigureServices()
        {
            var services = new ServiceCollection();
            services
                .AddLogging(opt =>
                {
                    opt.AddConsole();
                    opt.AddApplicationInsights();
                })
                .AddTransient<Program>()
            return services.BuildServiceProvider();
        }

        public async Task Run()
        { 
            try
            {
                do.stuff()
            }
            catch (Exception e)
            {
                logger.LogError(e, "Exception occured");
                // How …
Run Code Online (Sandbox Code Playgroud)

c# console-application azure azure-application-insights .net-core

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

如何在 Krusto 查询中循环数组以获取 Azure App Insight 数据?

我遇到了一个问题,我有一个 id 数组,我需要使用 id 过滤查询的输出。我怎样才能在 Krusto 中做到这一点,因为我没有找到任何有关循环或 foreach 的运算符。

例如,现在我有一个数组

let id=dynamic(['X0001', 'X0002', 'X0003'])
Run Code Online (Sandbox Code Playgroud)

然后我必须像这样过滤输出

myDatabase
| where message has id
| project timestamp, message
Run Code Online (Sandbox Code Playgroud)

我预计输出将是已经过滤消息的行,并且数组中存在任何 id。所以我必须循环数组中的 id 并检查它是否存在于消息属性中

我怎样才能实现这个目标?真的很感谢任何帮助!

azure azure-application-insights kql azure-data-explorer

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

“并非所有代码路径都返回值”错误发生在方法中,但我确实使用了一些 if 语句来涵盖所有场景

这可能是一个愚蠢的问题,但我只是想有人可以给出更好的解释。

我有一个方法定义如下:

    private int Test(int i)
    {
        if (i < 0) return -1;
        if (i == 0) return 0;
        if (i > 0) return 1;

        //return 0;        
    }
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误“并非所有代码路径都返回一个值”。

我以为我有 3 if statement,它可以涵盖所有场景(i<0,i==0,i>0)。所以它不应该向我显示这个错误。

c# if-statement compiler-errors return

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

当使用对象类型存储一个 int 值时,为什么 object.GetType() 返回 system.Int32?

代码如下:

object i = 11;

Console.WriteLine(i.GetType());
Run Code Online (Sandbox Code Playgroud)

它打印出“System.Int32”,为什么?我认为它应该是“system.object”。

c#

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

使用 .Net Core API 从 Azure Blob 存储异步流式传输视频

我发现了一堆示例,这些示例使用了我在应用程序中不可用的对象,并且似乎与我的 .NET Core Web API 版本不匹配。本质上,我正在开发一个项目,该项目在网页上有标签,并希望使用服务器中的流加载视频,而不是通过路径直接提供文件。原因之一是文件的来源可能会发生变化,并且通过路径提供它们并不是我的客户想要的。所以我需要能够打开流并异步写入视频文件。

由于某种原因,这会生成 JSON 数据,因此这是错误的。我正在从 Azure Blob 存储下载视频文件并作为流返回,但我只是不明白需要做什么才能将流式视频文件发送到 HTML 中的标记。

我的 API 控制器,

[AllowAnonymous]
    [HttpGet("getintroductoryvideos")]
    public async Task<Stream> GetIntroductoryVideos()
    {
        try
        {
            return  _documentsService.WriteContentToStream().Result;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的服务班,

 public async Task<Stream> WriteContentToStream()
    {
        var cloudBlob = await _blobService.GetBlobAsync(PlatformServiceConstants._blobIntroductoryVideoContainerPath + PlatformServiceConstants.IntroductoryVideo1, introductoryvideocontainerName);
        await cloudBlob.FetchAttributesAsync();

        var fileStream = new MemoryStream();
        await cloudBlob.DownloadToStreamAsync(fileStream);
        return fileStream;
    }
Run Code Online (Sandbox Code Playgroud)

c# azure html5-video azure-blob-storage asp.net-core-webapi

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

使用 LoggerFactory 登录 Application Insights for .NET Core 2.1 控制台应用程序

我有一个 .NET Core 2.1 控制台应用程序。我已经添加了所需的所有 Nuget 包。

private static IConfiguration Configuration { get; set; }
static void Main(string[] args)
{
    ServiceCollection services = new ServiceCollection();
    ConfigureServices(services);
    var serviceProvider = services.BuildServiceProvider();
    var logger = serviceProvider.GetService<ILoggerFactory>()
        .CreateLogger<Program>()
    var service = serviceProvider.GetService<TestClass>();
    service.TimmerTriggerTask();
}

private static void ConfigureServices(IServiceCollection services)
{
    IConfiguration config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json", true, true)
            .Build();
    services.AddApplicationInsightsTelemetry("8028437c-1111-2222-8293-2cf3f3f106a8"); //instrumentation key
    services.AddLogging(builder => builder.AddConsole());
}

TestClass.cs
public class TestClass
{
    private readonly ILogger<TestClass> _logger;

    public TestClass(ILogger<TestClass> logger)
    {
        Console.WriteLine("Ctor");
        _logger = logger; …
Run Code Online (Sandbox Code Playgroud)

.net console-application azure azure-application-insights asp.net-core-2.1

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

Azure App Insights API 在 C# 中使用查询获取跟踪

我正在尝试使用https://dev.applicationinsights.io/使用 Azure App Insights API 使用此“https://api.applicationinsights.io/v1/apps/889f31e2-8281-4d8b-bb80- 获取指标数据” 53a9f83d4a09/metrics/requests/duration?interval=PT1H", 通过标头传递 api 密钥。但无法获取查询:尝试过此操作: https: //api.applicationinsights.io/v1/apps/889f31e2-8281-4d8b-bb80-53a9f83d4a09/Query/traces | 其中 operation_Id 包含 62c5a318-c2cf-434e-a102-0e6efc0a84e7?interval=P7D

获取状态代码为 NotFound。

有什么建议吗,我错过了什么吗?

c# rest azure azure-application-insights

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