Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我会得到一个“a”;找不到路径的一部分“;例外?_C#_Asp.net_Visual Studio 2010_Filenotfoundexception - Fatal编程技术网

C# 为什么我会得到一个“a”;找不到路径的一部分“;例外?

C# 为什么我会得到一个“a”;找不到路径的一部分“;例外?,c#,asp.net,visual-studio-2010,filenotfoundexception,C#,Asp.net,Visual Studio 2010,Filenotfoundexception,我正在使用Visual Studio 2010开发网站。我正在尝试将文件保存在路径中。它在本地主机上运行良好 但是相同的代码在IIS中不起作用。它显示以下错误 异常详细信息:System.IO.DirectoryNotFoundException:无法 查找路径“C:\Inetpub\wwwroot\Vendor\cn.jpg”的一部分 找不到路径“C:\Users\shashank\Desktop\ab.csv”的一部分 代码如下: protected void btnImportFile_C

我正在使用Visual Studio 2010开发网站。我正在尝试将文件保存在路径中。它在本地主机上运行良好

但是相同的代码在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();
}

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

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

要访问、创建和删除服务器上的文件,必须具有相应的权限。 就像在我的项目中一样,我正在使用Impersonator类从服务器访问各种文件和文件夹。
否则它将抛出异常。

通常最佳做法是使用
App\u Data
文件夹将文件保存到


请看这里的教程。

您可以使用代码模拟:

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

您还可以在IIS上设置模拟


我还注意到您的函数名为btnImportFile。如果要上载文件,您可能需要查看FileUpload控件,该控件允许您获取文件的字节数组并根据需要进行保存。您可能仍然需要使用Server.MapPath或HttpContext.Current.Request.ApplicationPath,具体取决于您的需要。

您可能也遇到了“我”的情况:目录名包含一些不寻常的字符。就我而言

Could not find a part of the path 'C:\Web\metBoot\wild iis\DigiCert© Certificate Utility for Windows_files'.
版权标志就是问题所在

因此,使用从中提取的概念,我首先将路径转换为缩写形式,然后使用它来获取文件列表

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

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

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

错误很明显,目录或路径不存在。请检查您的计算机中是否存在“C:\Inetpub\wwwroot\Vendor\cn.jpg”目录。您的应用程序池标识是否对该文件夹具有权限?该路径存在于我的系统中我已将应用程序托管在服务器上,并从服务器访问它,因为它在服务器中搜索,而不是在您的系统中。这与问题?
 IEnumerable<string> fileGroup = Directory.EnumerateFiles(sf.ToString(), ext);