当前位置: 首页 > 知识库问答 >
问题:

无法启动 Azure 辅助角色,异常代码0xe0434352

梁丘宏硕
2023-03-14

当在仿真器中本地运行时,web工作程序工作正常。但是,每当我更新在Azure VM上运行的web工作程序时,我都会在事件查看器中获得以下异常异常,并且角色不会启动:

application:waworker host . exe < br >框架版本:v4.0.30319
说明:由于未处理的异常,进程被终止。< br >异常信息:系统。AggregateException
堆栈:位于系统。threading . tasks . task . wait(int 32,System。Threading . CancellationToken)。Foo上的Threading.Tasks.Task.Wait()
。push process . workerrole . run()< br >在微软。微软的windows azure . service runtime . role environment . startroleeinternal()。系统上的windows azure . service runtime . implementation . loader . role runtime bridge . b _ _ 2()。threading . execution context . run internal(System。执行上下文,系统。线程化。对象,布尔值)< br >在系统中。threading . execution context . run(System。执行上下文,系统。线程化。对象,布尔值)< br >在系统中。threading . execution context . run(System。执行上下文,系统。线程化。对象)< br >在系统中。threading . thread helper . threadstart()

内部异常:任务已取消。

出错应用程序名称:WaWorkerHost.exe,版本:2.6.1198.712,时间戳:0x54eba731
出错模块名称:KERNELBASE.dll,版本:6.3.9600.17415,时间戳:0x54505737
异常代码:0xe0434352
错误偏移量:0x0000000000008b9c
出错进程id: 0xfb8
出错应用程序开始时间:0x0

会话“MA_ETWSESSION_WAD_415df88f8a0447178dbd4c18f1349f0e_Foo.PushProcess_Foo.PushProcess_IN_0”未能启动,错误如下:0xC0000035

这是相关代码:

public override void Run()
{
    Trace.TraceInformation("Foo.PushProcess is running");

    try
    {
        RunAsync(_cancellationTokenSource.Token).Wait(); // This is where the exceptions point to
    }
    catch (Exception ex)
    {
        Trace.TraceError("[WORKER] Run error: " + ex);
    }
    finally
    {
        _runCompleteEvent.Set();
    }
}

public override bool OnStart()
{
    // Set the maximum number of concurrent connections
    ServicePointManager.DefaultConnectionLimit = 12;

    // For information on handling configuration changes
    // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

    bool result = base.OnStart();

    _storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));
    var queueClient = _storageAccount.CreateCloudQueueClient();
    _pushQueue = queueClient.GetQueueReference("pushes");
    _pushQueue.CreateIfNotExists();

    CreatePushBroker();

    Trace.TraceInformation("Foo.PushProcess has been started");

    return result;
}

private async Task RunAsync(CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested)
    {
        Trace.TraceInformation("Working");
        CloudQueueMessage message = null;
        try
        {
            message = _pushQueue.GetMessage();
            if (message != null)
            {
                ProcessItem(message);
            }
        }
        catch (Exception ex)
        {
            if (message != null && message.DequeueCount > 5)
                _pushQueue.DeleteMessage(message);

            Trace.TraceError("[WORKER] Retrieval Failure: " + ex);
        }

        await Task.Delay(1000, cancellationToken);
    }
}

注意,有些代码被省略了,但是这些代码都是在初始化之后运行的,理论上这个异常不会到达。

我完全不知道是什么导致了这个问题。任何帮助都将不胜感激——即使只是帮助我获得一个有用的例外。

更新

我现在已经将代码缩减到了以下内容——这是一个网络工作者所能做到的最简单的内容——我仍然在接受例外。我认为,要么旧的工作程序正在缓存,要么部署过程中存在问题。

public override void Run()
{
    Trace.TraceInformation("Foo.PushProcess is running");

    try
    {
        RunAsync(_cancellationTokenSource.Token).Wait(); // This is where the exceptions point to
    }
    catch (Exception ex)
    {
        Trace.TraceError("[WORKER] Run error: " + ex);
    }
    finally
    {
        _runCompleteEvent.Set();
    }
}

public override bool OnStart()
{
    // Set the maximum number of concurrent connections
    ServicePointManager.DefaultConnectionLimit = 12;

    // For information on handling configuration changes
    // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

    bool result = base.OnStart();

    return result;
}

private async Task RunAsync(CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested)
    {
        Trace.TraceInformation("Working");

        // code removed for testing - no work is being done.

        await Task.Delay(1000, cancellationToken);
    }
}

共有2个答案

寿毅庵
2023-03-14

为了解决这个问题,我简单地删除了拥有worker角色的原始Cloud VM实例,重新创建并重新发布了该角色。从那一点上来说,它工作得非常好。

我仍然无法确定是什么导致了错误,并且在任何其他辅助角色中也没有类似的问题。我在这里的假设是VM存在配置问题,无法通过代码或Azure门户进行修改。

长孙波鸿
2023-03-14

我给了这个一个旋转,不能得到这个在我的结束。我有VS 2015 Enterprise(14 . 0 . 23107 . 0d 14 rel ),它来自我部署运行的MSDN Azure映像。Net Fx版。我安装了Azure工具和SDK 2.8。我用。NET Fx 4.5.2,我添加了一个工人角色。

我刚刚从您的代码模板中运行了一些稀疏的代码模板,如下所示:

public class WorkerRole : RoleEntryPoint
{
    private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
    private readonly ManualResetEvent runCompleteEvent = new ManualResetEvent(false);
    private CloudQueue _pushQueue;
    private CloudStorageAccount _storageAccount;

    public override void Run()
    {
        Trace.TraceInformation("WorkerRole1 is running");

        try
        {
            this.RunAsync(this.cancellationTokenSource.Token).Wait();
        }
        catch (Exception ex)
        {
            Trace.TraceError("[WORKER] Run error: " + ex);
        }
        finally
        {
            this.runCompleteEvent.Set();
        }
    }

    public override bool OnStart()
    {
        // Set the maximum number of concurrent connections
        ServicePointManager.DefaultConnectionLimit = 12;

        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
        bool result = base.OnStart();
        _storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));
        var queueClient = _storageAccount.CreateCloudQueueClient();
        _pushQueue = queueClient.GetQueueReference("pushes");
        _pushQueue.CreateIfNotExists();

        CreatePushBroker();

        Trace.TraceInformation("Foo.PushProcess has been started");

        return result;

    }

    private void CreatePushBroker()
    {
        return;
    }

    public override void OnStop()
    {
        Trace.TraceInformation("WorkerRole1 is stopping");

        this.cancellationTokenSource.Cancel();
        this.runCompleteEvent.WaitOne();

        base.OnStop();

        Trace.TraceInformation("WorkerRole1 has stopped");
    }

    private async Task RunAsync(CancellationToken cancellationToken)
    {
        // TODO: Replace the following with your own logic.
        while (!cancellationToken.IsCancellationRequested)
        {
            Trace.TraceInformation("Working");
            CloudQueueMessage message = null;
            try
            {
                message = _pushQueue.GetMessage();
                if (message != null)
                {
                    ProcessItem(message);
                }
            }
            catch (Exception ex)
            {
                if (message != null && message.DequeueCount > 5)
                    _pushQueue.DeleteMessage(message);

                Trace.TraceError("[WORKER] Retrieval Failure: " + ex);
            }

            await Task.Delay(1000, cancellationToken);

        }
    }

    private void ProcessItem(CloudQueueMessage message)
    {
        return;
    }
}

}

这在本地模拟器中运行没有问题,我继续在一个小型实例VM上,在启用IntelliTrace的情况下将其部署到了美国西部,并遇到了n个部署问题。它运行在WA-GUEST-OS-4.26_201511-0来宾工作人员角色映像上,我能够在机器上进行RDP,我没有看到任何与代码或机器相关的问题。您是否有其他二进制文件没有包含在软件包中,或者可能存在一些未正确定义的依赖项,或者存储帐户命名问题?

这是我的部署日志。正如你所看到的,我花了大约7分钟从美国东部提取存储,只是为了好玩:

凌晨1:11:25-警告:存在包验证警告。凌晨1点11分26秒-检查远程桌面证书...凌晨1点11分26秒-上传证书...凌晨1时11分42秒-应用诊断扩展。凌晨1:12:24-正在使用服务管理URL 'https://management.core.windows.net/'.为订阅ID为“9a 4715 f 5-ACB 8-4a 18-8259-1c 28 b 92 xxxxx”的AzureCloudService1 - 11/24/2015凌晨1:11:19准备部署。凌晨1点12分24秒-正在连接...凌晨1点12分24秒-验证存储帐户“ericgoleastus”...凌晨1点12分24秒-上传包...凌晨1点12分28秒-正在创建...1:13:15 AM -创建的部署ID:c5f 26568707 b 46 a3 BD 42466 DD 0 BF 7509。凌晨1:13:15-角色工作错误1的实例0正在创建虚拟机凌晨1:13:15-正在启动...凌晨1点13分32秒-正在初始化...上午1:14:36-角色工作错误1的实例0正在启动虚拟机1:16:11上午-角色工作错误1的实例0处于未知状态1:16:43上午-角色工作错误1的实例0正忙详细信息:正在启动角色...html" target="_blank">系统正在初始化。[2015-11-24T01:16:08Z]上午1:19:50-角色worker错误1的实例0准备就绪上午1:19:50-创建的web应用程序URL:http://quequetest.cloudapp.net/上午1:19:50-完成。

让我们知道您是否可以在启用智能跟踪的情况下获得更多详细信息。

问候你,埃里克

 类似资料:
  • 我怎样才能解决这类问题?问题在于setOnClickListener,它给了我一个NullPointerException。如果你还需要什么,请告诉我。 这是日志中的错误:

  • 我正在Azure中运行一个Azure函数,该函数由上传到blob存储容器的文件触发。该函数检测到新的blob(文件),但随后输出以下消息-。 设置: 使用Python 3.6.8的Azure函数 在linux机器上运行 使用azure devops构建和部署(用于ci/cd功能) Blob触发函数 我使用相同的blob存储容器、相同的配置值和azure函数的本地实例在本地运行了代码。 函数的核心目

  • 我犯了这样的错误 内部错误:空指针异常 JVM终止。退出代码=1 /usr/bin/java -Xms256M -Xmx1024M -jar/opt/eclipse安装程序//插件/org。日食春分发射装置1.3.100。v20150511-1540。jar -os linux -ws-gtk -arch x86_64 -showsplash -launcher/opt/eclipse安装程序/e

  • rust代码无法在部分机器上正常启动 部署的机器都是Debian12 x86架构 main.rs web.rs watchdog.rs 部分成功启动机器截图,请忽略找不到路径的报错 启动失败机器截图 尝试1 更改x86_64-unknown-linux-gnu为x86_64-unknown-linux-musl 无效 尝试2 在watchdog.rs中添加输出代码可以正常输出,在web.rs中进行

  • 我已经看到了几个其他的线程处理类似的问题,但并不相同。我正在使用直接连接到浏览器,而偶尔会出现以下错误,无法启动。看起来我可以在配置文件中设置一些浏览器超时,只是无法计算出来。类似于 [chrome#1]直接使用ChromeDriver... 我已经多次运行这些相同的测试,现在在Firefox驱动程序上得到了失败。非常不规则 “D:\Program Files(x86)\JetBrains\Web