启用Fusion日志Azure Web作业

时间:2018-03-29 06:45:07

标签: azure azure-webjobs azure-web-app-service

我遇到Azure Web作业的问题,它在本地运行,但它不能在Azure上运行。问题是由于:

Unhandled Exception: System.IO.FileLoadException: Could not load file or 
assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, 
PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located 
assembly's manifest definition does not match the assembly reference. 
(Exception from HRESULT: 0x80131040) at 
Microsoft.Azure.WebJobs.ConverterManager..ctor()nat 
Microsoft.Azure.WebJobs.JobHostConfiguration..ctor(String 
dashboardAndStorageConnectionString)

我已安装Newtonsoft 10.0.0(某些库需要此版本)并在app.config中设置程序集重定向但它无效。

您知道如何在Azure Web作业上启用Fusion吗?或者如何调查这类问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于您已安装Newtonsoft.Json 10.0.x软件包,因此项目引用属性下的Newtonsoft.Json版本将为10.0.0。根据您的错误,我假设您的App.config文件中的dependentAssembly可能如下所示:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="10.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

您还需要检查bin文件夹,并确保Newtonsoft.Json.dll的属性窗口中“详细信息”选项卡下的“产品版本”属性为10.0.x.x。

此外,您可以尝试显式处理Main(string [] args)方法下的AssemblyResolve事件,如下所示:

AppDomain.CurrentDomain.AssemblyResolve += (sender, eventArgs) =>{
    //eventArgs.Name -> Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
    var assemblyname = eventArgs.Name.Split(',').FirstOrDefault();
    if (assemblyname.Equals("Newtonsoft.Json", StringComparison.CurrentCultureIgnoreCase))
    {
        return System.Reflection.Assembly.Load(assemblyname);

        //or just load assembly from another folder
        /*
         * string path = @"c:\temp\";
         * return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, $"{assemblyname}.dll"));
         */
    }
    return null;
};
  

我遇到Azure Web作业的问题,它在本地运行,但它不能在Azure上运行。

您可以利用KUDUFTP清空Web作业内容文件,然后重新部署WebJob以缩小此问题的范围。如果上述审核无法解决您的问题,您最好在您的网络工作项目中提供packages.config,以便我们解决此问题。