gpt4 book ai didi

使用 WebGet Web 服务进行 Azure 日志记录

转载 作者:行者123 更新时间:2023-12-03 04:52:43 25 4
gpt4 key购买 nike

我有一个现有的 WCF Web 服务,其中在一个 .cs 文件中包含三个 WebGet 处理程序。这些处理程序对其他 .cs 文件进行适当的调用来处理该操作。

现在,我通过创建 Azure 项目并添加现有解决方案,基于此 Web 服务创建了一个 Azure 项目。现在,我想使用 Trace.WriteLine 进行日志记录。我设置了 .cscfg、.csdef 和 Web.config 文件以允许登录到 Azure 存储。

但是,我不知道在哪里设置以下信息:

//Get the default configuration
DiagnosticMonitorConfiguration dmc = DiagnosticMonitor.GetDefaultInitialConfiguration();

//Set the schedule to transfer logs every 10 mins to the storage
dmc.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(10);

//Start Diagnostics Monitor with the storage account configuration
DiagnosticMonitor.Start("DiagnosticsConnectionString",dmc);

我尝试将其放置在包含记录器方法的单独内部静态类中,但在运行 Web 服务时收到 RoleEnvironmentException:error。

由于我的 Web 服务类中没有包含三个 WebGet 的 OnStart() 方法,因此我应该将其放在哪里以确保正确启动诊断监视器,以便可以使用 Trace.WriteLine?

最佳答案

不需要在每个正在运行代码的类上专门设置此配置代码,只需在 Web 角色启动时运行一次即可。通常执行此操作的位置是在 RoleEntryPoint 中。由于您创建了此项目,然后将其添加到您的云项目中,因此您不会拥有带有可重写的 OnStart() 方法的 RoleEntryPoint。但这并不意味着您不能拥有。

你有两个选择;

  1. 只需向继承自 Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint 的 Web 项目添加一个新类,并重写 OnStart() 即可设置诊断(这将是我的首选)
  2. 将相同的代码放在代码中的其他位置,使其仅运行一次,就像 global.asax 中的 Application_Start

关于使用 WebGet Web 服务进行 Azure 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5019573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com