![](/img/trans.png)
[英]Azure ServiceBus message from .net core does not parse in .net 4.6.1
[英]GetFullPath behavior in .Net Core 3.1.2 differs from .Net 4.6.1
下面的代码片段
var x = Path.GetFullPath(@"C:\test:");
使用 .Net 4.6.2 运行时抛出此(预计路径无效)异常
System.NotSupportedException: 'The given path's format is not supported.'
但是当我使用 .Net Core 3.2.1 运行相同的代码时,该方法只返回输入而不抛出异常。 AFAIKT 文档没有说明应该有这样的行为改变MSND
所以我的问题是:
这很有趣。 我可以完美地重现它。
似乎在 .NET Framework 中,它设法成功获取完整路径,但随后需要必要的文件 I/O 代码访问权限。 在模拟它时,它会不遗余力地检查驱动器分隔符后的冒号并抛出异常。
在 .NET Core 上,它有一个截然不同的实现,但它只做第一点。 它获取完整路径。 它不处理代码访问权限,因为这些在 .NET Core 中不存在,而且 API 只是出于兼容性目的的存根。 无论如何,它们在 Framework 中已经有些过时了。
但是,如果我们查看文档,则没有区别。 框架文档说Path.GetFullPath
可以抛出NotSupportedException
如果:
path
包含一个冒号(“:”),它不属于卷标识符(例如,“c:\\”)。
奇怪的是,.NET Core 的文档说明了完全相同的事情,尽管在这种情况下实际上并没有抛出异常。
我建议至少这是一个文档错误,如果不是运行时错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.