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

包含Include的低速EF核心查询

如何从 JavaScript 调用 C# 函数?

如何在 ASP.NET 中以 'YYYY-MM-DD' 格式获取当前日期?

在每页级别增加 ASP.Net 超时

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

解析 JSON 响应的最简单方法

ASP.net 页面在导入语句上出现错误,但我确实有参考?

FluentValidation 使用数据库的唯一名称验证

从 JavaScript 读取 web.config

在 ASP.NET Core 1.0 上处理大文件上传

无法使用单例Microsoft.AspNetCore.Hosting.Internal.HostedServiceExecutor中的范围服务MyDbContext

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

ASP.Net 自定义客户端验证

LINQ:使用 Lambda 表达式获取 CheckBoxList 的所有选定值

如何在 ASP.Net Gridview 中添加确认删除选项?

IIS 8.0 ASP.NET 和错误 500.19

会员生成密码 仅限字母数字密码?

投票有什么问题?

如何response.write bytearray?

Unity 中的单例每个调用上下文(Web 请求)