我有一个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相关问答推荐

如何处理当前文件中基本文件中的S onClick方法

设置主键时KeyAttribute属性不起作用

将 Response.Headers.Add 替换为方法属性decorator

DBSet 不包含 Where 的定义

在 lambda 表达式中否定 Func

Firefox 和 Chrome 之间 1 像素的行高差

在 ASP.NET 中访问没有值的查询字符串参数

威胁已经被清除了

EntityFramework 通过 ID 获取对象?

解析器错误消息:无法加载类型sometype

Web api 不支持 POST 方法

如何以编程方式获取会话 cookie 名称?

返回值使用 String result=Command.ExecuteScalar() 结果返回 null 时发生错误

aspx 文件中的 if 语句

使用 NancyFx 的好处?

为 ASP.NET Core MVC 显示 404 Not Found 页面

ASP.NET 5、EF 7 和 SQLite - SQLite 错误 1:没有这样的表:博客

在 C# 中动态创建 Json

LinkBut​​ton 向 OnClick 后面的代码发送值

强制 IIS Express 进入classic 管道模式