小编Jay*_*ran的帖子

使用Azure Function迭代容器中的所有Blob

我有一个现有的Azure函数,该函数解压缩文件并将每个文件添加为blob。

我现在想遍历这些文件并执行它们(它们是SQL文件)。我不想触发基于Blob创建的功能,而是在一个功能中通过它们全部运行。

在函数中,如何迭代容器中的斑点列表并获取其内容?

谢谢

c# azure azure-storage-blobs

2
推荐指数
1
解决办法
2876
查看次数

Azure功能与服务总线:如果处理出现问题,如何将消息保留在队列中?

我是服务总线的新手,无法解决这个问题.

基本上我正在使用挂在服务总线队列上的Azure功能应用程序.假设从服务总线触发了一个触发器,我从队列中收到一条消息,并且在处理该消息时,我的代码中出现了问题.在这种情况下,我如何确保再次将该消息放回队列中?目前它只是消失在空气中,当我在VS上重新启动我的功能应用程序时,将从队列中获取下一条消息.

理想情况下,只有当我完成所有数据处理并且当我点击myMsg.Success()时,我是否希望将其从队列中删除.

public static async Task RunAsync([ServiceBusTrigger("xx", "yy", AccessRights.Manage)]BrokeredMessage mySbMsg, TraceWriter log)
{
      try{ // do something with mySbMsg }

      catch{ // put that mySbMsg back in the queue so it doesn't disappear. and throw exception}
}
Run Code Online (Sandbox Code Playgroud)

我正在阅读mySbMsg.Abandon(),但它看起来像将消息放入死信队列中,我不知道如何访问它?如果有更好的错误处理方法?

c# azure azureservicebus azure-servicebus-queues azure-functions

2
推荐指数
1
解决办法
1385
查看次数

使用ARM模板为容器部署Web App

我一直在尝试自动将资源部署到Azure上的资源组。现在,我正在使用ARM模板,到目前为止,我已经能够使用模板创建App Insights和App Service Plan。它是这样的:

{
   "apiVersion": "2015-05-01",
   "name": "[variables('servicePlan')]",
   "kind": "linux",
   "type": "Microsoft.Web/serverfarms",
   "location": "[resourceGroup().location]",
   "tags": {
           "displayName": "BTC Push Notification Settings HostingPlan"
    },
    "sku": {
           "name": "[variables('skuNamePlan')]",
           "capacity": "[variables('skuSizePlan')]"
    },
    "properties": {
            "name": "[variables('servicePlan')]"
    }
},
{
    "apiVersion": "2015-05-01",
    "name": "[variables('appInsights')]",
    "type": "Microsoft.Insights/components",
    "location": "southcentralus",
    "tags": {
            "[concat('hidden-link:', resourceGroup().id, '/providers/Microsoft.Web/sites/', variables('appInsights'))]": "Resource",
            "displayName": "BTC Push Notification Settings App Insights"
     },
     "properties": {
            "applicationId": "[variables('appInsights')]"
        }
 }
Run Code Online (Sandbox Code Playgroud)

我很难创建用于容器的Web App,并使用ARM模板将其指向我的docker映像。我已经手动完成它和它的工作,我也做到了,通过azure-cli这样az webapp create --resource-group ExampleGroupAlpina --plan myAppServicePlan --name DockerContainer …

json azure azure-rm-template

2
推荐指数
2
解决办法
2745
查看次数

如果更改,Azure UploadDirectoryAsync 不会覆盖现有文件

我正在使用 Microsoft.WindowsAzure.Storage.DataMovement 库进行目录上传,如下所示

     TransferManager.Configurations.ParallelOperations = 64;

         UploadDirectoryOptions options = new UploadDirectoryOptions()
                    {                              
                        ContentType = "image/jpeg",
                        Recursive = true,                   

                    };


    context.FileTransferred += FileTransferredCallback;
    context.FileFailed += FileFailedCallback;
    context.FileSkipped += FileSkippedCallback;


    await TransferManager.UploadDirectoryAsync(sourceDir, destDir, options:
 options, context: context, cancellationToken: cts.Token);
Run Code Online (Sandbox Code Playgroud)

我认识到,如果我更改了同名的图像,函数将忽略该图像并在文件存在时返回异常。如果 datemodified 更改,如何替换图像?首先,我本地电脑上的 datemodified 和 azure 应该同步。

c# azure-storage azure-blob-storage

1
推荐指数
1
解决办法
938
查看次数

通过在Linq中分隔分隔符来选择另一个列表的列表

我正在尝试选择一个列表,其中包含另一个列表.但问题是我需要使用一些分隔符来分隔我的两个列表

我的名单是

{
    "Order": {
        "Items": [
            {
                "Details": [
                    {
                        "Product": "XXX",
                        "Category": "YYY"
                    },
                    {
                        "Product": "ZZZ",
                        "Category": "YYY"
                    }
                ]
            },
            {
                "Details": [
                    {
                        "Product": "AAA",
                        "Category": "BBB"
                    }
                ]
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

我的最终输出应该是这样的

XXX|YYYY^ZZZ|YYY^AAA|BBB
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用如下所示的解决方案.

 StringBuilder output= new StringBuilder();
 string delimiter = "";
 foreach (var items in order.Items) {
      output.Append(delimiter);
      output.Append(string.Join("^",items.Details.Select(l => l.Product+"|"+l.Category)));
      delimiter = "^";
 }    
Run Code Online (Sandbox Code Playgroud)

但这不是最好的选择.请帮助找到好的.

c# linq delimiter

1
推荐指数
1
解决办法
105
查看次数

VSTS,如何始终获取工件目录?

我可以通过对其进行硬编码来到达工件位置: $(System.DefaultWorkingDirectory)\_Testing-CI\test\

但是我可以以某种方式从发行版中的某些变量获取源别名和工件名称吗?

azure azure-devops

1
推荐指数
1
解决办法
1432
查看次数

将List转换为InputStream而不创建中间文件

我正在使用一个函数,该函数将获取输入作为 List 和 className,其中我将 List 转换为分隔符文件(中间),然后将文件转换为 InputStream 作为返回值。

这里创建中间文件并删除是一个乏味的过程,因为这会增加时间和性能。

那么有没有另一种方法,我们可以直接将数据从List<Class>带有标头的分隔符(也许我们可以将其存储在List<Object>)中,然后无需创建中间文件,我们可以直接将其转换为InputStream。

<T> InputStream createInputStream(String csvFileName, List<T> listObject, Class className, char csvPreference) {

        ICsvBeanWriter beanWriter = null;
        File file=new File(csvFileName);
        InputStream inputStream=null;
        try {
            CsvPreference DELIMITER = new CsvPreference.Builder('"', csvPreference, "\n").build();

            beanWriter = new CsvBeanWriter(new FileWriter(file), DELIMITER);
            List<String> fieldList = Arrays.stream(className.getDeclaredFields()).map(Field::getName).collect(Collectors.toList());
            CellProcessor[] processors = new CellProcessor[fieldList.size()];
            for (int i = 0; i < fieldList.size(); i++) {
                processors[i] = new Optional();
            }
            String[] header = new String[fieldList.size()];
            fieldList.toArray(header);
            beanWriter.writeHeader(header); …
Run Code Online (Sandbox Code Playgroud)

java inputstream list

0
推荐指数
1
解决办法
5553
查看次数

通过API触发Azure Pipelines构建

我创建了一个有效的Azure管道来构建我的代码库。

寻找一种通过API(最好是REST)触发Azure Pipelines构建的方法。如果无法使用REST,也许我可以尝试使用各种资源ID通过Azure Functions调用构建。我希望自己的存储库监视器发出一个API请求,该请求将在满足我的条件时触发构建。另一个问题-是否可以通过API设置“管道变量”-例如,我进行API调用,将值用作管道变量的值,然后触发构建。

谢谢

azure azure-devops azure-pipelines azure-pipelines-release-task

0
推荐指数
1
解决办法
3628
查看次数

Azure Devops 多个自定义条件

我在 azure devops 中有 2 个变量

Var1= A,B,C
Var2= 1,2
Run Code Online (Sandbox Code Playgroud)

我需要运行具有以下条件的任务

Var1=A,B,C & Var2=1,2

Var1=A & Var2=1
Run Code Online (Sandbox Code Playgroud)

官方文档我只能看到更简单的自定义条件

喜欢

and(succeeded(), in(variables['Var1'], 'A','B','C'))
Run Code Online (Sandbox Code Playgroud)

这里如何使用和条件再次包含 Var2更像是多个自定义条件

在一个简单的 C# 世界中,我们将像下面这样写

(Var1==A || Var1==B || Var1==C) && (Var2==1 || Var2==2)
Run Code Online (Sandbox Code Playgroud)

更新

我的最终条件是这样的

( ((Var1==A || Var1==B || Var1==C) && (Var2==2)) || ((Var1==A) &&(Var2==1))) 
Run Code Online (Sandbox Code Playgroud)

我怎么能在自定义条件下实现这一点?

azure-devops

0
推荐指数
1
解决办法
4642
查看次数

值不能为空。(参数“sharedKeyCredential”)当我们尝试使用 V12 的GenerateSasUri() 方法创建 SAS Uri 时

我们正在将代码从 V11 迁移到使用 azure storage v12 客户端库 (Azure.Storage.Blobs 12.12.0)。当我们尝试使用GenerateSasUri()方法创建SAS Uri时,出现下面提到的异常。
异常:“值不能为空。(参数‘sharedKeyCredential’)”

this.blobContainerClient = new BlobContainerClient(
                new Uri($https://{storageAccountName}.blob.core.windows.net/{containerName}),
                new ManagedIdentityCredential(managedIdentityAppId));

var blobClient = blobContainerClient.GetBlobClient(blobName);

            BlobSasBuilder sasBuilder = new()
            {
                BlobContainerName = containerName,
                BlobName = blobName,
                Resource = "b", 
                StartsOn = DateTime.UtcNow.AddMinutes(-15),
                ExpiresOn = expirationTimeUtc
            };
            sasBuilder.SetPermissions(requestedPermission);            

            return blobClient.GenerateSasUri(sasBuilder);
Run Code Online (Sandbox Code Playgroud)

c# storage azure azure-managed-identity

0
推荐指数
1
解决办法
2377
查看次数

使用分隔的ArrayList连接自己的字符串

我的ArrayList对象包含3个值.

ArrayList arr=new ArrayList()
arr.Add("abc");
arr.Add("def");
arr.Add("ghi");
Run Code Online (Sandbox Code Playgroud)

我有一个分隔这些值的要求, 分隔符

所以,我用谷歌搜索并得到了解决方案

string afterjoined=string.Join(",", (string[])arr.ToArray(Type.GetType("System.String")));
Run Code Online (Sandbox Code Playgroud)

上面的代码将返回为

ABC,DEF,GHI

但是上面的代码不允许任何字符串与它连接.

我想要一个特殊的字符串,需要与最终的分隔值连接,如下所示,

MYabc,MYdef,Myghi

这是我尝试使用现有代码(哪些不起作用)

string afterjoined=string.Join(",", "MYabc"+(string[])arr.ToArray(Type.GetType("System.String")));
Run Code Online (Sandbox Code Playgroud)

c# string arraylist

-1
推荐指数
1
解决办法
38
查看次数