将mvc应用程序部署到AWS后出现服务器错误

时间:2019-11-23 21:04:46

标签: c# asp.net asp.net-mvc amazon-web-services iis

我有一个asp.net MVC应用程序,它允许用户将PDF上载到系统上(PDF文件保存到名为Surveys的文件夹中)。然后将PDF发送到Azure Read API上,并将返回的数据存储在系统上的.text文件中(这样我以后就可以将一些数据输入数据库中了。)

当我使用IIS Express在本地测试时,此方法工作正常;我可以上传PDF,并使用返回的文本制作一个.text文件。问题是,当我部署Web应用程序(在这种情况下,要使用aws弹性beantalk)时,上传PDF时会出现服务器错误:

  

“ / BookingSystem_deploy”应用程序中的服务器错误。   找不到路径'C:\ inetpub \ wwwroot \ Surveys \ aaf6d80a-230f-4583-b57a-bf44ef49b903.pdf'的一部分。

我的控制器:

[HttpPost]
        public async Task<ActionResult> Upload(HttpPostedFileBase file)
        {
            string filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
            string filepath = @"C:\Users\35385\source\repos\BookingSystem\BookingSystem\Surveys\" + filename;
            file.SaveAs(Path.Combine(Server.MapPath("/Surveys"), filename));
            await AzureVisionAPI.ExtractToTextFile(filepath);


            return View();
        }

我猜测是否需要以某种方式更改“字符串文件路径”以支持部署后的目录更改?有人可以告诉我在这方面我需要做什么吗?或者如果错误与我完全不一样

编辑:在对我的问题进行了更多研究之后,我进行了一些更改

更改为控制器:

[HttpPost]
        public async Task<ActionResult> Upload(HttpPostedFileBase file)
        {
            string filename = Guid.NewGuid() + Path.GetExtension(file.FileName);
            string filepath = Server.MapPath(Path.Combine("~/Surveys/", filename));
            file.SaveAs(Server.MapPath(Path.Combine("~/Surveys/", filename)));
            await AzureVisionAPI.ExtractToTextFile(filepath);


            return View();
        }

现在,我收到另一个服务器错误(尽管尽管权限被拒绝,这听起来好像路径现在是正确的):

  

“ / BookingSystem_deploy”应用程序中的服务器错误。   拒绝访问路径'C:\ inetpub \ wwwroot \ BookingSystem_deploy \ Surveys \ 70c1528a-49ce-4ec2-814e-df83b150224e.pdf'。

有人能看到我在做什么吗?

1 个答案:

答案 0 :(得分:1)

1)确保在iis中为您的站点启用了匿名身份验证。

2)您的应用程序池标识设置如下:

enter image description here

设置iis_iusrs,iusr对站点文件夹的权限。

如果应用程序池标识不起作用,则尝试设置本地系统或网络服务。

为文件夹分配权限:

右键单击站点文件夹

转到“安全性”标签

点击修改

点击添加

点击高级

立即查找

授予IIS_IUSRS(完全控制)权限

点击确定

点击确定

点击“完全控制”以允许

点击确定

再次运行应用程序

在iis中分配权限刷新站点之后。