Asp.net 在web应用程序上使用.NET 4.6.2的长路径问题

Asp.net 在web应用程序上使用.NET 4.6.2的长路径问题,asp.net,.net,Asp.net,.net,我正在构建一个需要使用长路径的ASP.NET web应用程序。我把它瞄准了.NET4.6.2,因为4.6.2默认打开了长路径(),直到Windows10创建者(RS2)更新,所以一切都很完美 突然System.IO返回最大路径异常。我做了一些研究发现。似乎是Windows 10创建者(RS2)更新后,为了长路径工作,需要有一个app.mainfest <application xmlns="urn:schemas-microsoft-com:asm.v3"> <wind

我正在构建一个需要使用长路径的ASP.NET web应用程序。我把它瞄准了.NET4.6.2,因为4.6.2默认打开了长路径(),直到Windows10创建者(RS2)更新,所以一切都很完美

突然System.IO返回最大路径异常。我做了一些研究发现。似乎是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的等效项添加到web应用程序中

我不知道如何添加app.manifest的等效项 到web应用程序

这并不完全是标准做法,但您可以向ASP.NETWeb应用程序添加清单。如果您使用的是VS2017,它将类似于以下屏幕:


您可以尝试使用regedit更改此设置:

  • 以管理员身份运行regedit.exe
  • 找到
    [HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
  • 将数据值
    [LongPathsEnabled](DWORD)
    更改为
    1
  • 关闭regedit并重新启动窗口
  • 这也应该解决ASP.NET的问题

    注册表项也可以通过组策略

    计算机配置>管理模板>系统>文件系统>启用NTFS长路径

    您可以尝试在web.config中的
    结束标记后添加以下行:

    <runtime>
      <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
    </runtime>
    
    
    

    您可以尝试在文件路径前面加上
    \\?\
    前缀,以指定文件路径的长度超过最大路径260个字符。您可以在以下链接中找到更多信息:


    是否有可能出现在更新之前工作但现在不工作的可运行示例代码?这将更容易测试。