12

I am developing website using Visual Studio 2010. I am trying to save a file in a path. It works fine localhost.

But the same code is not working in IIS. It shows the following error

Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Inetpub\wwwroot\Vendor\cn.jpg'.

Could not find a part of the path 'C:\Users\shashank\Desktop\ab.csv'.

Here is the code:

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

7 回答 7

5

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

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

那个版权标志就是问题所在。

因此,使用从长文件名中获取短 8.3 文件名中的概念,我首先将路径转换为短格式,然后使用它来获取我的文件列表。

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);
于 2015-08-26T06:19:44.413 回答
1

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

于 2013-09-11T12:05:10.857 回答
1

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

于 2018-12-20T00:34:41.233 回答
0

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

于 2013-09-11T13:29:17.413 回答
0

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

于 2013-09-11T12:00:30.680 回答
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。

于 2015-07-02T04:59:44.333 回答
-3

App_Data使用文件夹来保存文件通常是最佳实践。

看看这里,使用文件,以获得教程。

于 2013-09-11T13:33:36.090 回答