C# FileUploadMiscError azure批处理输出文件
在Azure批处理云任务使用c#完成后,我尝试将输出文件上载到Azure blob。我的代码工作正常,但它给出了文件上载错误-任务失败“上载一个输出文件时遇到杂项错误”针对不同任务随机出现错误 集装箱ASURL代码-C# FileUploadMiscError azure批处理输出文件,c#,azure,azure-batch,C#,Azure,Azure Batch,在Azure批处理云任务使用c#完成后,我尝试将输出文件上载到Azure blob。我的代码工作正常,但它给出了文件上载错误-任务失败“上载一个输出文件时遇到杂项错误”针对不同任务随机出现错误 集装箱ASURL代码- SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy { SharedAccessExpiryTime = DateTime.UtcNow.Ad
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(sasUrlExpirationTime),
Permissions = SharedAccessBlobPermissions.Write
};
string sasContainerToken = string.Empty;
CloudBlobContainer container = BlobClient.GetContainerReference(containerName);
if (await container.CreateIfNotExistsAsync())
{
sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
}
sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
string outputContainerSasUrl= string.Format("{0}{1}", container.Uri, sasContainerToken);
CloudTask task = new CloudTask(taskId, taskCommandLine)
{
OutputFiles = new List<OutputFile>
{
new OutputFile(
filePattern: @"../std*.txt",
destination: new OutputFileDestination(
new OutputFileBlobContainerDestination(
containerUrl: outputContainerSasUrl,
path: jobdetails.JobId+"/output")),
uploadOptions: new OutputFileUploadOptions(
uploadCondition: OutputFileUploadCondition.TaskCompletion)
),
new OutputFile(
filePattern: @"%AZ_BATCH_JOB_PREP_WORKING_DIR%\*.dat",
destination: new OutputFileDestination(new OutputFileBlobContainerDestination(
containerUrl: outputContainerSasUrl,
path:jobdetails.JobId+"/output")),
uploadOptions: new OutputFileUploadOptions(
uploadCondition: OutputFileUploadCondition.TaskCompletion))
}
};
task.UserIdentity = new UserIdentity(new AutoUserSpecification(AutoUserScope.Pool, ElevationLevel.Admin));
task.ResourceFiles = inputFiles;
TaskConstraints taskConstraints = new TaskConstraints();
taskConstraints.MaxTaskRetryCount = 2;
task.Constraints = taskConstraints;
任务提交-
SharedAccessBlobPolicy sasConstraints = new SharedAccessBlobPolicy
{
SharedAccessExpiryTime = DateTime.UtcNow.AddHours(sasUrlExpirationTime),
Permissions = SharedAccessBlobPermissions.Write
};
string sasContainerToken = string.Empty;
CloudBlobContainer container = BlobClient.GetContainerReference(containerName);
if (await container.CreateIfNotExistsAsync())
{
sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
}
sasContainerToken = container.GetSharedAccessSignature(sasConstraints);
string outputContainerSasUrl= string.Format("{0}{1}", container.Uri, sasContainerToken);
CloudTask task = new CloudTask(taskId, taskCommandLine)
{
OutputFiles = new List<OutputFile>
{
new OutputFile(
filePattern: @"../std*.txt",
destination: new OutputFileDestination(
new OutputFileBlobContainerDestination(
containerUrl: outputContainerSasUrl,
path: jobdetails.JobId+"/output")),
uploadOptions: new OutputFileUploadOptions(
uploadCondition: OutputFileUploadCondition.TaskCompletion)
),
new OutputFile(
filePattern: @"%AZ_BATCH_JOB_PREP_WORKING_DIR%\*.dat",
destination: new OutputFileDestination(new OutputFileBlobContainerDestination(
containerUrl: outputContainerSasUrl,
path:jobdetails.JobId+"/output")),
uploadOptions: new OutputFileUploadOptions(
uploadCondition: OutputFileUploadCondition.TaskCompletion))
}
};
task.UserIdentity = new UserIdentity(new AutoUserSpecification(AutoUserScope.Pool, ElevationLevel.Admin));
task.ResourceFiles = inputFiles;
TaskConstraints taskConstraints = new TaskConstraints();
taskConstraints.MaxTaskRetryCount = 2;
task.Constraints = taskConstraints;
CloudTask task=newcloudtask(taskId,taskCommandLine)
{
OutputFiles=新列表
{
新输出文件(
文件模式:@“./std*.txt”,
目的地:新的OutputFileDestination(
新的OutputFileBlobContainerDestination(
containerUrl:OutputContainerAsUrl,
路径:jobdetails.JobId+“/output”),
uploadOptions:新的OutputFileUploadOptions(
uploadCondition:OutputFileUploadCondition.TaskCompletion)
),
新输出文件(
文件模式:@“%AZ\u批处理\u作业\u准备\u工作\u目录%\*.dat”,
目的地:新OutputFileDestination(新OutputFileBlobContainerDestination(
containerUrl:OutputContainerAsUrl,
路径:jobdetails.JobId+“/output”),
uploadOptions:新的OutputFileUploadOptions(
uploadCondition:OutputFileUploadCondition.TaskCompletion)
}
};
task.UserIdentity=newuseridentity(newautouserspecification(AutoUserScope.Pool,ElevationLevel.Admin));
task.ResourceFiles=输入文件;
TaskConstraints TaskConstraints=新的TaskConstraints();
taskConstraints.MaxTaskRetryCount=2;
task.Constraints=taskConstraints;
这段代码运行正常,但随机出现故障您可以检查您的fileuploadout.txt和fileuploaderr.txt,它们应该与stdout.txt和stderr.txt任务一起编写吗?理想情况下,如果您可以在此处共享它们(请确保编辑任何详细信息,例如登录到其中的SAS)。在FileUploader文件中,这只是内部服务器错误。但在fileuploadout文件中存在错误,如重试策略不允许重试…..HTTP状态代码=400,异常=指定的阻止列表无效。错误代码:InvalidBlockList。我已验证是否正在创建outfile。文件上载是否也包含该请求的请求ID?我已找出了此问题的根本原因。我试图将任务输出保存在作业准备目录AZ_BATCH_job_PREP_WORKING_DIR中。现在我使用任务输出目录AZ_BATCH_task_WORKING_DIR来解决这个问题