Azure Веб-роль облачной службы не запускается - Необработанное исключение - Невозможно найти сборку - PullRequest
2 голосов
/ 20 июня 2020

У меня есть веб-API ASP. NET, размещенный в веб-роли облачной службы. Я добавил класс WebRole, расширяющий RoleEntryPoint, который пытается получить контейнер Windsor с замком Io C, для которого установлены зависимости в StartUp.cs моего веб-API. Затем я хочу получить зарегистрированный мной экземпляр регистратора и использовать его в своей WebRole.

public class WebRole : RoleEntryPoint
{
    private ICancellationTokenSourceProvider _cancellationTokenSourceProvider;
    public override bool OnStart()
    {
        try
        {
            var container = IoC.GetContainer();
             _cancellationTokenSourceProvider = container.Resolve<ICancellationTokenSourceProvider>();
        }
        catch (Exception)
        {

            throw;
        }

        return base.OnStart();
    }

Однако, когда я пытаюсь развернуть это в облачной службе, я получаю следующее исключение:

Необработанное исключение: невозможно найти сборку Castle.Windsor, Version = 3.2.0.0, Culture = нейтральный , PublicKeyToken = 407dd0808d44fbd c '. в System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly () в System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType (BinaryAssemblyInfo assemblyInfo, имя строки) в System.Runtime.Serialization.FormattersMap.Obinary. .ctor (String objectName, String [] memberNames, BinaryTypeEnum [] binaryTypeEnumA, Object [] typeInformationA, Int32 [] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray AssemIdToAssemblyTable.info, SizedArray AssemIdToAssemblyTable. .ReadObjectWithMapTyped (запись BinaryObjectWithMapTyped) в System.Runtime.Serialization.Formatters.Binary .__ BinaryParser.Run () в System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (HeaderHandlerCrossMandler, обработчик SerialCall, __BjectReader. methodCallMessage) в System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (Stream serializationStr eam, обработчик HeaderHandler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) в System.Runtime.Remoting.Channels.CrossAppDomainSerializer.DeserializeObject (MemoryStream stm) at System.AppDomain. [] blob) '[2020-06-19T16: 48: 01Z] Время последнего выхода: [19.06.2020, 16: 48: 05.617]. Последний код выхода: 0.

Я тщательно пытался найти причину и решение этой проблемы.

  • Я попытался добавить перенаправления привязки к отсутствующей сборке в MyApi .dll.config и убедитесь, что он настроен на постоянное копирование.
  • Я также удостоверился, что для сборки Copy Local также установлено значение true.

Однако , Я все еще получаю эту ошибку каждый раз, и веб-роль продолжает перезапускаться, пытаясь восстановиться после этого исключения.

1 Ответ

0 голосов
/ 22 июня 2020

Внимательно прочтите описание проблемы, я думаю, проблема должна заключаться в проблеме загрузки сборки, такой как MyApi.dll.

Во-первых, из-за ограничений облачной среды Azure это может не получится загрузить некоторые сторонние сборки. Вы можете обратиться к этому сообщению .

После создания службы Azure Cloud Services вы можете получить виртуальную машину и войти в систему, используя RDP. Поэтому я предлагаю вам сначала создать свое приложение, не содержащее кода, который ссылается на сторонний .dll, для обеспечения успешного развертывания. Затем войдите в виртуальную машину с помощью метода RDP, откройте cmd, используйте команду regsvr32 xxx.dll, чтобы зарегистрировать сторонний файл .dll в реестре, а затем повторно разверните весь проект сейчас. Проверьте, решена ли проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...