Разрешение исключений .NET TypeLoad в службе приложений Azure - PullRequest
0 голосов
/ 11 января 2019

У меня есть служба приложений Azure, в которой я опубликовал свое приложение .NET (.NET Framework 4.7.2). Приложение отлично работает на локальной Visual Studio IIS Express.

Когда я запускаю его в службе приложений, я получаю исключения TypeLoadException. Интересные части, например, такие ошибки:

    - System.IO.FileLoadException: Could not load file or assembly 'EPiServer.Forms, Version=3.0.0.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
File name: 'EPiServer.Forms, Version=3.0.0.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7'

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Теперь в любом случае с виртуальным сервером я могу просто включить значение реестра EnableLog и узнать больше о том, какую зависимость я пропускаю. Я попытался изменить значение реестра через PowerShell, но получил отказ в доступе. В Azure я также не нашел никакого средства просмотра журнала Fusion.

Как правильно отлаживать ошибки привязки сборки в службе приложений Azure?

Просматривая это: Как включить ведение журнала ошибок привязки сборки (Fusion) в .NET , но это ничего не говорит о том, как это сделать в службе приложений Azure.

1 Ответ

0 голосов
/ 15 января 2019

В настоящее время нет возможности получить журнал Fusion в службе приложений Azure. Потому что для его включения необходимо изменить реестр. Но изменение реестра не разрешено в службе приложений Azure. Обратитесь к здесь для получения дополнительной информации.

Ошибка «Определение манифеста обнаруженной сборки не соответствует ссылке на сборку». обычно означает, что сборка, найденная во время выполнения, не соответствует указанной в приложении.

В веб-приложении Azure вы можете проверить dll через FTP. Установите флажок « Доступ к файлам через ftp ». DLL обычно находится в \wwwroot\bin. Убедитесь, что информация DLL соответствует DLL, которую вы используете в решении. Вы можете проверить web.config и package.config, указали ли вы другую версию для этой сборки.

Также обратитесь к здесь , чтобы понять, как во время выполнения .net находит dll.

...