Azure如何从WebRole.OnStart记录异常

时间:2014-08-30 01:20:18

标签: azure azure-diagnostics

我正在疯狂地想出WebRole.OnStart()中出了什么问题。我知道发生了问题。我只是不知道问题是什么

我已将以下内容添加到web.config:

<system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, 
            Microsoft.WindowsAzure.Diagnostics, 
            Version=2.4.0.0, 
            Culture=neutral, 
            PublicKeyToken=31bf3856ad364e35"
           name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>

我还在WebRole.OnStart()

添加了以下内容
Trace.TraceInformation("OnStart()");

try
{
    CallMethodThatCausesException();
}
catch (Exception ex)
{
    Trace.TraceError("Exception: " + ex.ToLogString());
    throw;
}

我还在WebRole诊断中设置了自定义计划:

但是,我找不到任何日志文件,TableStorage中的表格或BlobContainers中包含上述Trace个语句的blob。

我看到WADLogsTable,但我看到的唯一条目是Loaded "Microsoft.WindowsAzure.ServiceRuntime, Version=2.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

在事件日志中,我确实看到了一个例外:

Description: The process was terminated due to an unhandled exception. Exception Info: System.IO.FileLoadException Stack: at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.&lt;InitializeRole&gt;b__0() at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Threading.ThreadHelper.ThreadStart()

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用http://blogs.msdn.com/b/kwill/archive/2013/08/09/windows-azure-paas-compute-diagnostics-data.aspx处的故障排除方案来调试您遇到的任何角色启动类型的问题。特别是,请检查http://blogs.msdn.com/b/kwill/archive/2013/10/03/troubleshooting-scenario-7-role-recycling.aspx,它与您遇到的情景非常相似。

我怀疑您的问题是您引用的另一个DLL引用的Microsoft.WindowsAzure.ServiceRuntime版本早于您正在部署的2.4版本。您可以将该依赖DLL升级到最新的ServiceRuntime,也可以在配置文件中添加绑定重定向以强制该依赖DLL使用2.4 ServiceRuntime。