我正在将文件从 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) 当 anILogger被初始化时,我们给它一个名称,通常是类型名称。当通过它写入日志时,该值会清楚地打印到控制台。此外,配置中的严重性过滤通过此名称进行。
但是,我似乎在 Application Insights/Log Analytics 中看不到该名称。它记录了大量我不关心的内容,但似乎错过了这个主要字段。
谢谢
Ivan 要求提供代码和屏幕截图,所以这是我们多年来用来制作命名记录器的标准代码。
var logger = loggerFactory.CreateLogger("EventHub");
logger.LogInformation($"Publishing event '{eventName}' from '{sourceId}'.");
Run Code Online (Sandbox Code Playgroud)
以下是门户中日志(分析)中可用的所有字段。这些都不是记录器名称。在我看来,记录器的名称将位于前五个最有用的字段中。
再次感谢。
我正在使用 .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,我也遇到了相同的异常。
我怎么能解决这个问题?
我有一个使用应用程序洞察的 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
我遇到了一个问题,我有一个 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 并检查它是否存在于消息属性中
我怎样才能实现这个目标?真的很感谢任何帮助!
这可能是一个愚蠢的问题,但我只是想有人可以给出更好的解释。
我有一个方法定义如下:
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)。所以它不应该向我显示这个错误。
代码如下:
object i = 11;
Console.WriteLine(i.GetType());
Run Code Online (Sandbox Code Playgroud)
它打印出“System.Int32”,为什么?我认为它应该是“system.object”。
我发现了一堆示例,这些示例使用了我在应用程序中不可用的对象,并且似乎与我的 .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) 我有一个 .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
我正在尝试使用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。
有什么建议吗,我错过了什么吗?
azure ×8
c# ×6
.net ×1
.net-core ×1
azure-files ×1
html5-video ×1
if-statement ×1
kql ×1
rest ×1
return ×1