我有一个Azure网站,其中包含一个包含多个实例的生产和临时插槽.
我在网站上运行了几个Azure webjobs,其中一些是触发其他连续的.
据我所知,触发的webjobs只能在一个实例上运行一次.
我目前的设置是:
生产站点除了从分段交换之外没有其他部署
暂存网站设置为从bitbucket持续部署
使用"发布到Azure"将Webjobs从VS内部署到生产槽(因为AFAIK不支持基于计划的webjobs的连续部署)
该网站的VS解决方案与包含webjobs的VS解决方案不同
我注意到当我交换生产和分期时,webjobs也被交换了!当我将新的webjob部署到生产中并随后进行网站部署然后进行交换时,我意识到了这一点,新部署的webjob不再位于生产槽中!
我的问题:
是否有可能阻止webjobs在生产和分期之间交换(webjobs实际上是完全不同的代码片段而不是网站)
什么是交换webjobs?二进制文件?时间表?两个?
如何阻止所有webjobs在临时插槽上运行?我的webjobs不需要高度可用,我可以轻松地离线测试它们.
如果我VS将webjobs部署到临时插槽并进行交换,那么当前的暂存插槽将缺少已部署的webjob,当我进行下一次网站更新时,我将丢失它,那么我应该在哪里部署我的webjobs?
有一个相关的线程,但它假设webjob与一个网站同时部署,这不是我目前的.
我真的很喜欢网站和webjobs,但似乎与连续独立部署webjobs和网站有关的故事被打破了.
真的很感激建议!
谢谢
我使用Apple Configurator设置了少量设备作为监督设备.但是,我无法使用UIAccessibilityRequestGuidedAccessSession API 让应用程序成功进入单一应用程序模式.
我创建了一个配置文件,其中包含Meraki控制台中设置的限制,特别是我已将Meraki控制台中的"允许单一应用程序模式"字段设置为我的应用程序包ID.
我假设Meraki中的这个字段映射到autonomousSingleAppModePermittedAppIDs配置键.我添加了我的应用程序,这是一个IPA(未从应用程序商店安装)安装在受监督设备上.
配置文件和应用程序已在iPad上成功安装,但调用UIAccessibilityRequestGuidedAccessSession()仍然失败.
调用本身非常简单:
NSLog(@"requesting guided access");
UIAccessibilityRequestGuidedAccessSession(YES, ^(BOOL didSucceed) {
if (didSucceed) {
NSLog(@"entered guided access");
self.inGuidedSessionMode = YES;
[[[UIAlertView alloc] initWithTitle:@"entered single access mode" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
}
else {
NSLog(@"failed to enter guided access");
[[[UIAlertView alloc] initWithTitle:@"Unable to enter single access mode" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
}
});
Run Code Online (Sandbox Code Playgroud)
设备日志显示以下条目
Mar 26 11:42:31 BayLeaf-Kiosk-4 backboardd[28] <Error>: HID: The 'Passive' connection 'xxxxxx' access to protected services is …Run Code Online (Sandbox Code Playgroud) 我必须遗漏一些明显的东西,但是以下失败并出现编译错误:
internal static IEnumerable<T> GetEntitiesWithCommaSeparatedRowKeys<T>(
string tableName, string partitionKey,
string commaDelimitedStringOfRowKeys) where T: TableEntity
{
....
TableQuery<T> entitiesQuery = new TableQuery<T>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey",
QueryComparisons.Equal, partitionKey),
TableOperators.And,
AzureHelper.GetFilterConditionForCommaDelimitedStringOfRowKeys(commaDelimitedStringOfRowKeys)
));
// compile error on this line
IEnumerable<T> entities = table.ExecuteQuery<T>(entitiesQuery);
...
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
'T' must be a non-abstract type with a public parameterless constructor
in order to use it as parameter 'TElement' in the generic type or
method 'Microsoft.WindowsAzure.Storage.Table.CloudTable.ExecuteQuery<TElement>
(Microsoft.WindowsAzure.Storage.Table.TableQuery<TElement>,
Microsoft.WindowsAzure.Storage.Table.TableRequestOptions,
Microsoft.WindowsAzure.Storage.OperationContext)'
Run Code Online (Sandbox Code Playgroud)
TableEntity显然有一个公共无参数构造函数,并且是非抽象的.当我在TableEntity上点击F12时,以下是来自元数据信息的对象(只是为了确保正确解析TableEntity类型).
namespace Microsoft.WindowsAzure.Storage.Table
{
public class TableEntity : ITableEntity
{ …Run Code Online (Sandbox Code Playgroud)