为什么我得到“无法找到路径的一部分”例外?

时间:2013-09-11 11:57:59

标签: c# asp.net visual-studio-2010 filenotfoundexception

我正在使用Visual Studio 2010开发网站。我想在路径中保存文件。它工作正常localhost。

但是相同的代码在IIS中不起作用。它显示以下错误

  

异常详细信息:System.IO.DirectoryNotFoundException:无法   找到路径'C:\ Inetpub \ wwwroot \ Vendor \ cn.jpg'的一部分。

     

无法找到路径'C:\ Users \ shashank \ Desktop \ ab.csv'的一部分。

以下是代码:

protected void btnImportFile_Click(object sender, EventArgs e)
{
    sArReportText = File.ReadAllText(txtFilePath.Text.Trim());
    // Set the report Properties to insert Report information
    SetProperties();
}

7 个答案:

答案 0 :(得分:4)

您可能也会遇到我的情况:目录名称包含一些不常见的字符。就我而言,

Could not find a part of the path 'C:\Web\metBoot\wild iis\DigiCert© Certificate Utility for Windows_files'.

该版权符号就是问题所在。

因此,使用从Obtaining the short 8.3 filename from a long filename绘制的概念,我首先将路径转换为简短形式,然后使用它来获取我的文件列表。

            StringBuilder sf = new StringBuilder(300);
            int n = GetShortPathName(sourceFolder, sf, 300);
            if (0 == n)
            {
                tk.write(Marshal.GetLastWin32Error().ToString());
                continue;
            }

...

            IEnumerable<string> fileGroup = Directory.EnumerateFiles(sf.ToString(), ext);

答案 1 :(得分:1)

这可能是因为您在Web服务器中没有指定的文件,或者您可能使用了错误的路径。指定确切的文件夹和文件名,以及它在Web服务器中的存储方式。使用HttpContext.Current.Request.ApplicationPathServer.MapPath指定所需文件所在的正确位置。并确保您已为此特定文件及其文件夹授予读写权限。

答案 2 :(得分:0)

您需要在iis中设置权限才能将文件保存在文件夹中。基本上,您上传的文件应保存在根目录中的单独文件夹中。

答案 3 :(得分:0)

要访问,创建和删除服务器上的文件,必须具有权限。 就像我的项目一样,我使用Impersonator类从服务器访问各种文件和文件夹。 否则会引发异常。

答案 4 :(得分:0)

您可以使用代码模拟:

http://csharptuning.blogspot.com/2007/06/impersonation-in-c.html http://www.codeproject.com/Articles/14358/User-Impersonation-in-NET

无论您使用何种模仿,都必须能够读取/写入要保存到的位置。我们在跨网络删除/创建文件夹的应用程序中使用此方法。即使App_Data是最佳实践,访问该文件夹之外的文档也可能是业务要求。

您还可以在IIS上设置模拟。

我还注意到你的函数叫做btnImportFile。如果要上载文件,可能需要查看FileUpload控件,这样可以获取文件的字节数组并根据需要进行保存。 https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload%28v=vs.110%29.aspx。您可能仍需要根据需要使用Server.MapPath或HttpContext.Current.Request.ApplicationPath。

答案 5 :(得分:0)

也考虑一下如何启动VS。与直觉相反,只有在管理员模式下运行VS时,我才会遇到此问题。可能是组策略的事情。

答案 6 :(得分:-2)

通常最佳做法是使用App_Data文件夹将文件保存到。

在这里查看Working with files,获取教程。