【问题标题】:strange issue when uploading file via asp.net, vs manually via FTP通过 asp.net 上传文件与通过 FTP 手动上传文件时的奇怪问题
【发布时间】:2014-03-21 18:03:16
【问题描述】:

我在 ASP.Net MVC 中有一个表单,它允许您上传文件。该文件将保存到服务器上的某个位置。例如域为www.test-domain.com,本地路径为c:\websites\test-domain.com\,则图片存储在/uploads/File/image.jpg中。

当我尝试访问此 URL http://www.test-domain.com/uploads/File/image.jpg 时,我被重定向到 web.config 中的 forms loginUrl="XXXX" 路径。为了测试,我完全删除了 web.config,并访问了该文件。这一次,我收到了401 - Unauthorized: Access is denied due to invalid credentials

然后我这次通过 FTP 上传了另一个文件到http://www.test-domain.com/uploads/File/image2.jpg。这个可以毫无问题地访问。我什至尝试下载通过 Asp.Net 保存的image.jpg,删除服务器上的文件并通过 FTP 重新上传相同的文件,它又可以工作了!

似乎通过 FTP 工作,而通过 Asp.Net 不知何故有一些访问/授权要求。我确实在 Asp.Net 中设置了身份验证,但我删除了整个 web.config 文件,但仍然出现错误。

有什么想法吗?

【问题讨论】:

  • 你能比较两个文件的安全细节吗?查看image2.jpg 中的用户是否与image.jpg 上的用户不同
  • @QuetiM.Porta 感谢您的提醒。这些文件确实具有不同的安全权限。但是,问题正如答案中所解释的那样,我正在移动文件,最初我不知道发生了这种情况。

标签: asp.net asp.net-mvc asp.net-mvc-4 web-config authorization


【解决方案1】:

我已经找到了发生这种情况的原因,尽管它与我一开始的想法完全无关。我正在上传一张图片并调整它的大小。我进一步查看了代码,出于某种原因,我在临时 windows 文件夹中创建了一个图像,然后使用 File.Move 将其移动到实际位置。

似乎创建的安全权限与我必须直接在最终文件夹中创建文件不同。我已经更新了代码以直接在实际文件夹中创建图像,这工作正常。

参考:http://blogs.msdn.com/b/oldnewthing/archive/2006/08/24/717181.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-12
    • 2012-04-26
    • 2013-03-24
    • 1970-01-01
    • 2018-01-05
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多