【问题标题】:Internal Server Error uploading image in Azure在 Azure 中上传图像的内部服务器错误
【发布时间】:2015-01-30 07:30:34
【问题描述】:

我在 .Net MVC 应用程序中创建了一个基本的拖放图像上传用户界面。我只是使用非常基本的代码将图像保存到服务器,这在本地工作,但是在我部署到 Azure 后,我收到一个 javascript 警报,弹出“内部服务器错误”,这很奇怪,因为我的代码中没有任何地方显示带有状态的警报。

这是我试过的代码:

(基本上取自 Phil Haack 的文章)

public ActionResult UploadPhoto(HttpPostedFileBase file)
    {
        if (file.ContentLength > 0)
        {
            var splitFileName = file.FileName.Split('.');
            var type = splitFileName[splitFileName.Length - 1];
            var fileName = User.Identity.Name;
            var path = "/Content/Users/" + fileName + "." + type;               
            var pathToSave = Path.Combine(Server.MapPath("~/Content/Users"), fileName + "." + type);
            file.SaveAs(pathToSave);
        }

        return Json("All files have been successfully stored.");
    }

有些东西阻止了此上传在 Azure 上发生,有人有什么想法吗?

【问题讨论】:

  • 如果我没记错的话,你遇到了一个未捕获的异常。您可以做的一件事是捕获异常并将堆栈跟踪返回给客户端,以查看导致错误的原因。
  • 这是真的,但例外是由于上传图片,上传在本地运行良好,并且从 phil haack 的博客中删除 - 所以绝对已经过测试。所以...我希望有人知道需要更改哪些配置设置才能将图像上传到托管在 Azure 上的网站服务器
  • 我猜,但我认为这与文件保存有关。可能是您在 Azure 中运行代码时无权访问该路径。顺便说一句,您是在 Azure 网站还是 Azure 云服务中部署代码?
  • 您的日志对 500 错误有何看法?如果某处有 ACCESS_DENIED,我不会感到惊讶。文件 ACL 的上传位置是否正确?
  • 这是 Azure 网站,我还没有通过并得到实际的错误,但我确信它是类似于访问被拒绝的东西。它位于 Web 应用程序根目录下名为“Content/UserImages”的文件夹中

标签: c# asp.net-mvc azure


【解决方案1】:

您不能像这样将图像上传到 azure Web 服务器。您的网站无权在发布之外更改文件系统。您必须使用 Azure 或其他服务提供的 Blob 或 CDN 服务来托管用户上传的内容。

【讨论】:

  • 实际上比我想象的要容易得多。这就是我的想法 - 只是希望有人知道黑客攻击,但这显然更好地以正确的方式开始
猜你喜欢
  • 2015-10-29
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
相关资源
最近更新 更多