- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当在模拟器中本地运行时,Web Worker 工作正常。但是,每当我更新在 Azure VM 上运行的 Web Worker 时,我都会在事件查看器中收到以下异常,并且该角色不会启动:
Application: WaWorkerHost.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AggregateException
Stack: at System.Threading.Tasks.Task.Wait(Int32, System.Threading.CancellationToken) at System.Threading.Tasks.Task.Wait()
at Foo.PushProcess.WorkerRole.Run()
at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal() at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__2() at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()Inner Exception: A task was canceled.
Faulting application name: WaWorkerHost.exe, version: 2.6.1198.712, time stamp: 0x54eba731
Faulting module name: KERNELBASE.dll, version: 6.3.9600.17415, time stamp: 0x54505737
Exception code: 0xe0434352
Fault offset: 0x0000000000008b9c
Faulting process id: 0xfb8
Faulting application start time: 0x01d11e3128981a5d
Faulting application path: E:\base\x64\WaWorkerHost.exe
Faulting module path: D:\Windows\system32\KERNELBASE.dll
Report Id: 30631c5c-8a25-11e5-80c6-000d3a22f3ec
Faulting package full name:
Faulting package-relative application ID:
Session "MA_ETWSESSION_WAD_415df88f8a0447178dbd4c18f1349f0e_Foo.PushProcess_Foo.PushProcess_IN_0" failed to start with the following error: 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);
}
}
请注意,一些代码已被省略,但是这些代码都是在初始化后运行的,理论上此异常不会到达。
我完全不知道是什么导致了这个问题。任何帮助将不胜感激 - 即使只是为了帮助我获得有用的异常(exception)。
更新
我现在已经将我的代码减少到下面 - 它就像网络 worker 一样简单 - 并且我仍然遇到异常。我认为要么是旧的工作线程被缓存,要么是部署过程中存在问题。
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);
}
}
最佳答案
我尝试了一下,但没能在我这边重现。我有来自 MSDN Azure 镜像的 VS 2015 Enterprise (14.0.23107.0 D14REL),我使用 .Net Fx 版本 4.6 部署运行。我安装了 Azure 工具和 SDK 2.8。我使用 .NET Fx 4.5.2 创建了一个新的 Azure 云服务,并添加了一个辅助角色。
我刚刚运行了您的一些稀疏代码模板,如下所示:
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;
}
}
}
它在本地模拟器中运行没有问题,我继续将其部署到美国西部,并在小型实例虚拟机上启用了 IntelliTrace,但遇到了部署问题。它在 WA-GUEST-OS-4.26_201511-0 guest 工作角色镜像上运行,我能够通过 RDP 连接到计算机,并且没有看到与代码或计算机相关的任何问题。您是否有任何其他二进制文件可能未包含在包中,或者可能存在一些未正确定义的依赖项,或者存储帐户命名问题?
这是我的部署日志。正如您所看到的,大约花了 7 分钟,因为我只是为了好玩而从美国东部提取存储:
1:11:25 AM - 警告:存在软件包验证警告。1:11:26 AM - 检查远程桌面证书...1:11:26 AM - 上传证书...1:11:42 AM - 应用诊断扩展。上午 1:12:24 - 准备部署 AzureCloudService1 - 2015 年 11 月 24 日上午 1:11:19,订阅 ID 为“9a4715f5-acb8-4a18-8259-1c28b92XXXXX”,使用服务管理 URL“https://management.core.windows.net/” '...1:12:24 AM - 正在连接...1:12:24 AM - 正在验证存储帐户“ericgoleastus”...1:12:24 AM - 上传包...1:12:28 AM - 创建...凌晨 1:13:15 - 创建的部署 ID:c5f26568707b46a3bd42466dd0bf7509。1:13:15 AM - 角色 WorkerRole1 的实例 0 正在创建虚拟机凌晨 1:13:15 - 开始...1:13:32 AM - 正在初始化...1:14:36 AM - 角色 WorkerRole1 的实例 0 正在启动虚拟机1:16:11 AM - 角色 WorkerRole1 的实例 0 处于未知状态1:16:43 AM - 角色 WorkerRole1 的实例 0 正忙 详细信息:正在启动角色...系统正在初始化。 [2015-11-24T01:16:08Z]1:19:50 AM - 角色 WorkerRole1 的实例 0 已准备就绪1:19:50 AM - 创建的 Web 应用程序 URL:http://quequetest.cloudapp.net/凌晨 1:19:50 - 完成。
请告诉我们您是否可以在启用 IntelliTrace 的情况下获得更多详细信息。
问候,埃里克
关于c# - 无法启动 Azure 辅助角色,异常代码 0xe0434352 和 0xC0000035,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698286/
我无法弄清楚为什么会这样。 $ cat | g++ -xc - #include int main(int argc, char* argv[]) { return 0; } :1: fatal
我试图断言标签(动态填充)的值包含一个子字符串作为 UITest 结果的一部分。 我的问题是 XCTAssert 似乎不允许子字符串或近似匹配(从我能找到的内容来看)。有没有人对我如何编写以下内容以找
有谁知道如何处理 tvOS 上的 UI XCTest 的滑动手势?我的页面顶部有一个隐藏的导航栏,在 Remote 上向下滑动时会出现该导航栏。我似乎无法在 UI 测试中使用 XCUIRemote.s
从 Xcode10 开始,我们可以在多个模拟器上并行运行 UI 测试。但是,我找不到在多个设备上运行的方法。这不可能吗? 谢谢,R 最佳答案 这是可能的,但只能通过命令行。替代方法 - 设置机器人(X
我在应用商店提交应用时选择了 xc adhoc * 分发配置文件。我想我应该选择特定于应用程序的分发配置文件。 但现在处于等待审核状态。我的问题是苹果是否批准了它? 或者我需要在 iTunes 上重新
如果用户需要在登录后重新验证,我会运行一段代码。在 UI 测试期间,有时会显示此弹出窗口,因此我会检查它是否存在 if (XCUIApplication().staticText["authLabel
我正在尝试同时使用 XCUI 和 XC 测试。我找到了这个 twitter post说这是可能的。但是,我应该在build设置的哪个部分放置这些新属性? 我问是因为我尝试了该方法并将这些设置放在项目目
所以,让我先解释一下我的问题。 我不想中继我的网络服务器数据,我想为我的 XCUITests stub 数据。因此,我将确保它在 100% 的时间内返回正确的数据,有时我需要测试一些特定的(例如错误或
我正在尝试从 TextView 中删除以前的值,但由于光标始终位于 TextView 的开头,所以我无法删除。我正在使用 extension XCUIElement { /** Re
我已经在 Ubuntu 上安装、配置了我的 Postgres XC 1.0.2。我能够毫无困难地设置 GTM、协调器、节点 1 和 2。但是当尝试在两个节点之间分发数据时,我收到了以下实际上相互矛盾的
我被要求重构包含片段的查询: SELECT @xi:=@xi+1 AS xc FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3) xc1,
我试图求解一个线性系统 Xc=y那是方形的。我知道解决这个问题的方法是: 使用逆向 c= 使用高斯消元法 使用伪逆 据我所知,这些似乎与我认为的基本事实不符。 首先通过将 30 次多项式拟合到频率为
我从 Apple 开发者网站中删除了所有应用 ID 和配置文件。然后我创建了一个新的 Xcode 7.3.1 项目,并单击“未找到匹配的配置文件”消息旁边的“修复问题”。 它创建的应用ID称为“XC
我的 Xcode 突然生成了它自己的 Ad Hoc 配置文件。我的临时配置文件都很好,但是当我现在创建存档时,xcode 只生成它自己的配置文件。我不知道是什么导致了这个问题。 这是问题的截图。 当我
我尝试在 Glassfish 应用程序服务器(版本 4.1.1)上使用 JAX-RS 资源,但收到 java.lang.NoClassDefFoundError: org/codehaus/jacks
根据SourceForge Postgres-XC 的页面,在 Postgres-XC 中创建分布式表时,它可以使用属性 DISTRIBUTE BY : DISTRIBUTE BY REPLICATI
尝试在使用 SDWebImage 设置的 CocoaPods 上运行 XCTest,但我只能看到如下错误。有什么建议吗? :0: error: module name "" is not a vali
昨天我下载了Xcode 6,现在我遇到了一个我无法解决的问题。在我的成员(member)中心,我有有效的证书和临时供应(分发)。直到昨天,在 Xcode 5 中,如果我想将我的 .ipa 添加到 Te
我正在使用 Parse.com 将客户端推送通知从一台 iDevice 发送到另一台 iDevice。 它适用于“开发”设置,即- 在“开发”上设置的 appID 的推送通知设置 - 开发 SSL 证
我正在使用 Xcode 5。我有一个 OS X Framework/iOS 静态库项目,其中包含混合的 ObjC/C++ 代码和语言方言设置为 C11/C++11。 我添加了一个使用 XCTest 的
我是一名优秀的程序员,十分优秀!