gpt4 book ai didi

c# - 运行 Azure 函数时路径中存在非法字符

转载 作者:行者123 更新时间:2023-12-02 03:16:46 25 4
gpt4 key购买 nike

我有一个已运行一整天的 Azure 函数。大约二十分钟前,当我尝试单击 Visual Studio 中的运行按钮时,开始出现错误。它成功构建,然后在启动时显示并错误,仅指出“路径中的非法字符 - Visual Studio”。我检查了 git 日志,没有进行任何更改,所以我不确定出了什么问题。

我附上了问题的图片来尝试说明问题:

issue

我已经尝试了所有我能想到的方法。这是我已采取的所有步骤的列表。

  • 重新启动机器
  • 重新克隆存储库
  • 重新安装 Visual Studio 2017 和 2019
  • 删除了 appdata 文件夹
  • 清除缓存文件
  • 浏览调试菜单
  • 系统已恢复
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Zupa.Products.ProductsService.Models.Messages.V1;

namespace Zupa.ProductFileUploadFunction
{
public static class FileUploadProcessor
{
private const string FunctionName = nameof(FileUploadProcessor);

[FunctionName(FunctionName)]
public static void Run(
[BlobTrigger("%IncomingContainerPath%/{blobFileName}", Connection = "AzureWebJobsStorage")]Stream inputBlob,
[ServiceBus("%QueueName%", Connection = "QueueServiceBus")]out string outgoingMessage,
string blobFileName, ILogger log)
{
log.LogInformation($"{FunctionName} Processing blob {Environment.NewLine} Name:{blobFileName + Environment.NewLine} Size: {inputBlob.Length} Bytes");
outgoingMessage = null;

var (parsedOrganisationId, parsedUploadId) = (Guid.Empty, Guid.Empty);

var organisationId = GetPartFromString(blobFileName, "/", 0);
var fileUploadType = GetPartFromString(blobFileName, "/", 1);
var isRecognisedFileUploadType = Enum.GetNames(typeof(FileUploadType)).Select(name => name.ToLowerInvariant()).Contains(fileUploadType.ToLowerInvariant());
var uploadId = GetPartFromString(blobFileName, "/", 2);
var fileName = GetPartFromString(blobFileName, "/", 3);

var propertyValidation = new Dictionary<string, bool>()
{
{
nameof(FileUploadDataEventMessage.OrganisationId),
string.IsNullOrEmpty(organisationId) || !Guid.TryParse(organisationId, out parsedOrganisationId)
},
{
nameof(FileUploadDataEventMessage.FileUploadType),
string.IsNullOrEmpty(fileUploadType) || isRecognisedFileUploadType
},
{
nameof(FileUploadDataEventMessage.UploadId),
string.IsNullOrEmpty(uploadId) || !Guid.TryParse(uploadId, out parsedUploadId)
},
{
nameof(FileUploadDataEventMessage.FileName),
string.IsNullOrEmpty(fileName)
}
};

foreach (KeyValuePair<string, bool> propertyValidationPair in propertyValidation)
LogPropertyInErrorState(log, propertyValidationPair.Value, blobFileName, propertyValidationPair.Key);

var hasInvalidPathParameters = parsedOrganisationId == Guid.Empty || !isRecognisedFileUploadType || parsedUploadId == Guid.Empty || string.IsNullOrEmpty(fileName);

outgoingMessage = !hasInvalidPathParameters ? JsonConvert.SerializeObject(new FileUploadDataEventMessage()
{
OrganisationId = parsedOrganisationId,
UploadId = parsedUploadId,
FileUploadType = Enum.Parse<FileUploadType>(PascalCaseWord(fileUploadType)),
FileName = fileName,
Timestamp = DateTimeOffset.Now
}) : null;

log.LogInformation($"{FunctionName} Processed blob {Environment.NewLine} Name:{blobFileName + Environment.NewLine} Size: {inputBlob.Length} Bytes");
}

private static string GetPartFromString(string inputString, string delimiter, int targetIndex)
{
var inputStringParts = inputString.Split(delimiter);

if (inputStringParts.ElementAtOrDefault(targetIndex) != null)
return inputStringParts[targetIndex];

return null;
}

private static void LogPropertyInErrorState(ILogger log, bool errorValidationCondition, string fileName, string propertyName)
{
var errorMessage = errorValidationCondition ?
$"{FunctionName} Failed to process blob {Environment.NewLine} Name: {fileName + Environment.NewLine} Missing or invalid {propertyName}" : string.Empty;

if (!string.IsNullOrEmpty(errorMessage))
log.LogInformation(errorMessage);
}

private static string PascalCaseWord(string input) =>
input.Substring(0, 1).ToUpperInvariant() + input.Substring(1);
}
}

这似乎不是该功能的问题,因为团队的其他成员似乎没有遇到相同的问题并且可以成功运行该功能。所以我假设这是一个系统问题。

最佳答案

对于遇到此问题的任何人,我终于找到了解决方法

非常感谢 Tsuyoshi Ushio 在 Medium 上的发言,请按照以下步骤解决问题,该问题似乎是当 azure 函数工具文件在 %appdata%/local 文件夹中处于错误状态时

https://medium.com/@tsuyoshiushio/visual-studio-2017-2019-fails-when-i-create-an-azure-functions-project-89e993ef31f

关于c# - 运行 Azure 函数时路径中存在非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com