当在仿真器中本地运行时,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);
}
}
为了解决这个问题,我简单地删除了拥有worker角色的原始Cloud VM实例,重新创建并重新发布了该角色。从那一点上来说,它工作得非常好。
我仍然无法确定是什么导致了错误,并且在任何其他辅助角色中也没有类似的问题。我在这里的假设是VM存在配置问题,无法通过代码或Azure门户进行修改。
我给了这个一个旋转,不能得到这个在我的结束。我有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