C# DirectoryInfo.在Windows Server 2016上创建截断目录名

C# DirectoryInfo.在Windows Server 2016上创建截断目录名,c#,directoryinfo,C#,Directoryinfo,我们正在将应用程序迁移到新的windows服务器(2012年至2016年)。代码和数据库相同,在2012年正常工作(VS 2012.NETFramework 4.5)。基本上,当上传文件时,应用程序会将文件放在特定的目录中。如果目录不存在,将创建它。 创建目录的代码: var fpath = Path.Combine(FileSystemHelper.RepositoryAttaPath, vault); var di = new DirectoryInfo(fpath

我们正在将应用程序迁移到新的windows服务器(2012年至2016年)。代码和数据库相同,在2012年正常工作(VS 2012.NETFramework 4.5)。基本上,当上传文件时,应用程序会将文件放在特定的目录中。如果目录不存在,将创建它。 创建目录的代码:

     var fpath = Path.Combine(FileSystemHelper.RepositoryAttaPath, vault);
        var di = new DirectoryInfo(fpath);
        //create the folder if does not exists
        if (!di.Exists)
            di.Create()
这在2012服务器上运行良好,但会截断2016服务器上的vault文件夹。例如 如果在c:\tmp下创建名为RASTER的新文件夹,则会发生以下情况:

2012服务器c:\tmp\graster已创建。
2016服务器c:\tmp\RAS已创建


相同的代码只是不同的服务器。是什么原因导致名称被截断?

是否确定
vault
始终是
光栅
?请查看有关发布代码的指南。请验证所有字符串硬编码的真实最小示例是否与post声明和问题的工作方式相同。@Raymond Chen No vault并不总是光栅,也可能是矢量。但在Windows 2016服务器上,它只创建文件夹RAS或VEC。在windows 2012服务器上,它正确创建光栅或矢量文件夹。记录
di.FullName
以确保它是您认为的路径。也许有人在你创建目录后重新命名了它。在做了更多的挖掘之后,我发现问题出在我使用的Oracle client 12.1上。已知会截断返回的varchar值。。vault参数是通过存储过程确定的,并且被oracle客户端截断。删除了客户端并重新安装了oracle 11R2客户端,一切正常。