我的 ASP-Webpages 应用程序需要将自己生成的文件写入其根目录下的本地文件夹。一切都像魅力一样在我的开发环境中运行,甚至到任何其他给定的网络位置。问题是我无法让生产环境做同样的事情。只是没有文件被创建,任何地方。也不会因缺少权限等引发任何异常。 Nada。
我相信我已经阅读并尝试了过去七年来任何人在 Internet 上写的所有内容,我觉得我正在努力解决这个问题。真的应该那么难吗?冒着被标记为重复的风险,除了在这里发布我的问题外,我没有其他选择。
基本上,这是我到目前为止所拥有的:
生产应用程序在 Windows Server 2008 R2、IIS 7.5 版上运行。它有一个专用的应用程序池,其标识设置为 ApplicationPoolIdentity(.NET Framework v4 / 集成管道)。 应用程序基本设置
已验证 IIS_IUSRS 的 AppPool 成员资格。 验证组成员资格
用户身份验证设置为 Windows 身份验证。 用户认证
是否应将匿名身份验证设置为“启用”以使用 ApplicationPoolIdentity?我试过设置它,但它与 Windows 身份验证冲突,这是我们应用程序的重要组成部分,无法关闭。如果是这样,那怎么办?
应用程序池和 IIS_IUSRS 都已被授予对该文件夹的读取和写入权限。我试过设置完全控制,但这也无济于事。 文件夹安全设置
这是将文件写入所需位置的(精简)代码: 精简代码
我尝试过的其他(愚蠢的)事情是:
- 在我的代码中使用绝对和相对路径方向。
- 启用匿名身份验证,导致与必要的 Windows 身份验证发生冲突。
- 将应用程序池 ProcessModel 标识设置为网络服务。
- 回收应用程序池。
- 为应用程序池加载用户配置文件“打开”。
- 为用户设置 IE 增强安全配置“关闭”。
- 重新启动服务器机器。
- 使用不同的浏览器。
- 授予“每个人”完整文件夹权限,只是为了尝试效果,什么都没有..
- 通过 IIS 配置编辑器将 AuthenticatedUserOverride 设置为 UseWorkerProcessUser。这会导致我的应用程序不再识别 Current.User.Identity.Name,因此它会阻止进一步的站点访问。
我需要的是保持 Windows 身份验证,但也能够让应用程序匿名将文件写入给定位置。
有人可以提示我正确的方向还是告诉我我忽略了什么?
谢谢!