我在使用我的应用程序时遇到问题。我怀疑生产中运行的版本可能与我的存储库中的版本不完全一致,但我不完全确定。
我每天都会收到一封电子邮件摘要,其中包含以下调用堆栈:
2024-09-17 13:15:06.697 +02:00 [Warning] Error parsing filename parts for file "C:\temp.txt".
System.ArgumentException: Requested value 'CHCR' was not found.
at System.Enum.TryParseByName(RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)
at System.Enum.TryParse(Type enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)
at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)
at Application.GetFileNameParts(String file) in C:\Application\FileResolver.cs:line 229
但是,当我检查代码中的 GetFileNameParts 方法(通过 IL Spy)时,我没有看到任何对 System.Enum.TryParse 的显式调用。该代码仅调用 System.Enum.Parse,这正是我所期望的。以下是相关代码片段:
try {
FilePart fileParts = new();
string messageType = "CHCR";
fileParts.MessageType = (FileMessageType)Enum.Parse(typeof(FileMessageType), messageType, true);
} catch (Exception e) {
_log.LogWarning(e, "Error parsing filename parts for file {file}.", file);
return null;
}
当我使用
System.Enum.TryParse
时,我很难理解 Enum.Parse
是如何出现在堆栈跟踪中的。这可能是版本不匹配,还是有其他我可能忽略的事情?
我提供的所有详细信息都在上面的部分中。