2017-05-11 47 views

回答

1

将Microsoft.WindowsAzure.WebSites.Diagnostics反编译后,我发现我们无法通过添加一些代码来直接设置连接字符串。

该软件包用于Web应用程序服务。启用Web应用程序诊断日志后,应用程序服务将自动添加一些环境变量。 Microsoft.WindowsAzure.WebSites.Diagnostics将读取这些变量以连接到Azure存储和日志消息到文件。

所以,如果你想使用这个库来追踪错误,我建议你可以尝试设置所有的环境变量作为Web服务。但这太复杂了。

这里是一个解决方法,我建议你可以使用一些日志错误包来将错误记录到天蓝色的存储中,如NLog或其他东西。它包含extension for azure table storage

这里是在Microsoft.WindowsAzure.WebSites.Diagnostics一些源代码,你会发现它使用EnvironmentVariable阅读设置:

BaseTraceListener:

protected string GetConfigFile() 
     { 
      string environmentVariable = Environment.GetEnvironmentVariable("DIAGNOSTICS_LOGGINGSETTINGSFILE"); 
      string environmentVariable2 = Environment.GetEnvironmentVariable("HOME"); 
      if (environmentVariable == null) 
      { 
       return Path.GetFullPath(Path.Combine(environmentVariable2, "site\\diagnostics\\settings.json")); 
      } 
      if (Path.IsPathRooted(environmentVariable)) 
      { 
       return environmentVariable; 
      } 
      return Path.GetFullPath(Path.Combine(environmentVariable2, "site", "wwwroot", environmentVariable)); 
     } 

AzureblobTrancelistener:

protected override void RefreshConfig() 
     { 
      try 
      { 
       Config config = base.ReadConfigFile(); 
       base.Enabled = config.AzureBlobEnabled; 
       base.TraceLevel = config.AzureBlobTraceLevel; 
      } 
      catch (Exception innerException) 
      { 
       base.Enabled = false; 
       base.LogException(new ApplicationException(string.Format(Resources.TraceListenerIsDisabledByInvalidConfig, base.GetType().Name), innerException)); 
      } 
      if (base.Enabled) 
      { 
       try 
       { 
        string environmentVariable = Environment.GetEnvironmentVariable("DIAGNOSTICS_AZUREBLOBCONTAINERSASURL"); 
        if (string.IsNullOrWhiteSpace(environmentVariable)) 
        { 
         throw new InvalidOperationException(string.Format(Resources.CloudStorageSasUrlNotSpecified, "DIAGNOSTICS_AZUREBLOBCONTAINERSASURL")); 
        } 
        this.blobContainer = new CloudBlobContainer(new Uri(environmentVariable)); 
       } 
       catch (Exception innerException2) 
       { 
        base.Enabled = false; 
        this.blobContainer = null; 
        base.LogException(new ApplicationException(string.Format(Resources.TraceListenerIsDisabled, base.GetType().Name), innerException2)); 
       } 
      } 
     } 
相关问题