Web应用程序

时间:2017-08-03 06:50:00

标签: c# asp.net windows-server-2016 pathtoolongexception

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>

和应用程序清单文件,如上面的博客链接中所述。

任何想法都赞赏。

1 个答案:

答案 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