我正在构建一个需要使用长路径的ASP.NET Web应用程序。我将它定位到.NET 4.6.2并且一切都很完美,因为4.6.2默认情况下启用了长路径(Source),直到Windows 10创建者(RS2)更新。
突然,System.IO正在返回最大路径异常。我做了一些研究,发现This post。似乎发布Windows 10创建者(RS2)更新,为了使长路径工作,需要有一个app.mainfest
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>
我已经确认将app.manifest修改添加到控制台应用程序会带来长路径功能。唯一的问题是这是一个Web应用程序。我无法弄清楚如何将app.manifest的equivelant添加到Web应用程序中。
答案 0 :(得分:3)
答案 1 :(得分:2)
您可以尝试在<startup>
结束标记后的 web.config 中添加以下行:
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
答案 2 :(得分:1)
您可以尝试使用regedit更改此设置:
run regedit.exe
作为管理员 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
[LongPathsEnabled] (DWORD)
更改为1
这也应该解决ASP.NET的问题。
也可以通过
组策略来控制注册表项
Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
。
答案 3 :(得分:0)
您可以尝试在文件路径前面加上\\?\
,以指定其长文件路径,该路径超过MAX_PATH,即260个字符。可以在下面的链接中找到更多信息:
https://docs.microsoft.com/en-gb/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation