Windows 10和Windows Server 2016为传统的长路径问题引入了解决方案。该解决方案很容易实现,并在以下blog帖子中详细说明。以下步骤适用于.NET控制台/桌面应用程序。但是,出于某种原因,当从ASP.NET Web应用程序运行相同的代码时,我仍然得到相同的经典System.IO.PathTooLongException
异常。
抛出异常的代码:
Directory.CreateDirectory(longPath);
正如我所提到的,代码在控制台应用程序上成功运行,但在ASP.NET网站应用程序中失败。 web.config网站包括以下内容:
<?xml version="1.0"?>
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false"/>
</runtime>
</configuration>
和应用程序清单文件,如上面的博客链接中所述。
任何想法都赞赏。
答案 0 :(得分:2)
感谢@ bradbury9指出类似的问题,我确认应用程序无法在运行时加载交换机长路径阻塞设置。另外,由于我的应用程序版本基于.NET 4.5.1,因此无法使用AppContext class以编程方式手动设置所需的开关。
解决方案:
对于基于.NET 4.6.1或更低版本的ASP.NET Web应用程序,请确保在运行该应用程序的计算机上也安装了.NET 4.6.2,并添加以下属性targetFramework="4.6.2"
httpRuntime
配置。
示例:
<system.web>
<httpRuntime targetFramework="4.6.2" />
<compilation targetFramework="4.5.1" />
</system.web>
*请注意,支持Long Path的Windows,如Windows Server 2016和Windows 10,已经安装了.NET 4.6.2