【发布时间】:2021-04-13 03:17:54
【问题描述】:
我有一个在 IIS 中运行的 ASP.Net 应用程序,它使用 CsvWriter 在指定位置创建一个文件。如果我使用完整的 UNC 路径,我会收到拒绝访问路径的错误,但是如果我使用驱动器号,它可以正常工作。令我不解的是,它确实适用于开发环境中的 UNC 路径。
创建文件的代码
using (var writer = new StreamWriter(fileName))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteField("Foo");
csv.WriteField("Bar");
csv.NextRecord();
}
遵循各种帖子的建议,例如 Access to the path is denied 和 IIS7 Permissions Overview - ApplicationPoolIdentity 和 MS Documentation: Application Pool Identities。我最初确信我的问题与安全有关。应用程序可以在使用我的用户凭据的开发环境 (IIS Express) 中完美运行,但不能在使用应用程序池标识的 IIS 下完美运行,这一事实支持了这一点。我授予 MyApplicationPoolIdentity 对特定目录的完全访问权限,但无济于事。
但是,我发现如果我使用驱动器号 (C:\myDirectory\mySubDirectory\myFile.csv) 而不是 UNC 路径 (\\myServer\myDirectory\mySubDirectory \myFile.csv)在生产中完美地创建了文件。尽管我的应用程序正在运行,但我担心的是我的 IIS 或我的服务器可能有一些配置问题,这可能会在以后咬我。所以我的问题是什么会导致创建文件/写入失败使用 UNC 路径而不是使用驱动器号?
我使用的是 Windows Server 2016。
谢谢 托尼
【问题讨论】:
标签: c# asp.net iis application-pool