我有一个asp.net网络应用程序,将文件上载到Web服务器上的特定文件夹.在本地,一切正常,但当我将应用程序部署到Web服务器时,我开始收到错误"访问路径"D:\Attachments\myfile.doctor "被拒绝".我向"IIS AppPool"用户提供了应用程序在文件夹上的完全权限下运行的信息.我甚至给了"每个人"完全的权限,但也有同样的错误.

我将该文件夹添加到杀毒软件的例外列表中,但结果相同.我开始怀疑Windows Server2008R2可能需要一个技巧才能让我的上传生效.我真的很感谢你的帮助.

谢谢

推荐答案

您的ASP.NET帐户{MACHINE}\ASPNET对该位置没有写入权限.这就是它失败的原因.

考虑向ASP.NET请求标识授予对资源的访问权限.

右键点击下载文件夹Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names

现在这应该显示你的本地{MACHINENAME}\ASPNET帐户,然后你设置这个帐户的写入权限.

否则,如果应用程序是通过<identity impersonate="true"/>模拟的,则身份将是匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的请求用户.


或者仅使用专用位置在ASP.NET中存储文件,该位置为App_Data.要创建它,请右键单击您的ASP.NET项目(在Visual Studio中)Add > Add ASP.NET Folder > App_Data.然后,您将能够将数据保存到此位置:

var path = Server.MapPath("~/App_Data/file.txt");
System.IO.File.WriteAllText(path, "Hello World");

Asp.net相关问答推荐

如何从 ASP.NET 中的代码隐藏文件访问 IFRAME?

如何在 ASP.NET 中设置自动实现属性的默认值

在 Web.Config 的 Location Path 元素中指定多个目录

IIS 中的嵌套 ASP.NET应用程序继承父配置值?

Server.Transfer 在执行子请求时抛出错误.如何解决?

静态字段与会话变量

如何使用 jQuery 设置 outerHTML

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

你如何确定哪个验证器失败了?

如何在 Visual Studio 2017 中使用 NPM 并安装包?

Web Api 参数始终为空

带有完整内存错误的 WCF 服务(内存门判断失败,因为可用内存) - 如何解决

禁用 web.config 继承?

WebForm_PostBackOptions 文档

VS 2010 中缺少 App_Code 文件夹

IIS 8.0 ASP.NET 和错误 500.19

将 MemoryStream 写入响应对象

压力测试 ASP.Net 应用程序

如何判断字符串的第一个字符是否是字母,C#中的任何字母

IE9 JavaScript 错误:SCRIPT5007:无法获取属性ui的值:对象为空或未定义