提问者:小点点

处理请求时发生未处理的异常。dotnet核心


我发现了许多类似的问题,但我无法解决这个问题,因此张贴了一个新的。

我开发了具有登录/注册功能的dotnet核心web应用程序。在编辑配置文件部分,有一个功能,用户可以更新他的配置文件图片。这在当地很管用。当我将它部署到服务器上时,我会得到下面提到的错误。

供您参考的代码

        private Dictionary<string, string> UploadProfilePic(EditUserProfilePicViewModel model)
    {
        string uniqueFileName = null;
        Dictionary<string, string> imageNamesMap = new Dictionary<string, string>();

        string contentRoot = config.GetValue<string>(WebHostDefaults.ContentRootKey);
        string tempFolder = contentRoot + "\\wwwroot\\images\\temp";
        string uploadFolder = contentRoot + "\\wwwroot\\images\\profilepics";

        if (model.ProfileImage != null)
        {
            try
            {
                string[] fileNameArray = model.ProfileImage.FileName.ToString().Split('.');
                string fileExtension = fileNameArray[fileNameArray.Length - 1];
                uniqueFileName = model.ProfileId.ToString() + '-' + model.ProfileUrl + "." + fileExtension;

                //store image in the temp folder
                string filePath = Path.Combine(tempFolder, uniqueFileName);

                using (var fileStream = new FileStream(filePath, FileMode.Create))
                {
                    model.ProfileImage.CopyTo(fileStream);
                }

                using (Image sourceImage = Image.FromFile(filePath))
                {
                    if (sourceImage != null)
                    {
                        try
                        {
                            //resize to 300px and store in profilepics folder
                            using (Image destinationImage = ResizeImage(sourceImage, 300, 300))
                            {
                                uniqueFileName = model.ProfileId.ToString() + '-' + model.ProfileUrl + "-300." + fileExtension;
                                imageNamesMap.Add("LargeImage", uniqueFileName);
                                string fileSavePath = Path.Combine(uploadFolder, uniqueFileName);
                                destinationImage.Save(fileSavePath, ImageFormat.Jpeg);
                            }

                            //resize to 75px and store in profilepics folder
                            using (Image destinationImage = ResizeImage(sourceImage, 75, 75))
                            {
                                uniqueFileName = model.ProfileId.ToString() + '-' + model.ProfileUrl + "-75." + fileExtension;
                                imageNamesMap.Add("SmallImage", uniqueFileName);
                                string fileSavePath = Path.Combine(uploadFolder, uniqueFileName);
                                destinationImage.Save(fileSavePath, ImageFormat.Jpeg);
                            }
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
                DeleteFilesFromDir(tempFolder);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        return imageNamesMap;
    }

你能帮我拿这个吗?


共1个答案

匿名用户

该错误表示应用程序在服务器上运行时使用的用户帐户没有访问所述路径的权限(您可以使用特权帐户登录服务器并启动应用程序以确认这一点)。任何应用程序都是从特定用户帐户运行的系统进程,这可能是一个真实的本地服务器帐户(servername\user),Active Directory帐户(directoryname\user)或某个虚拟帐户。如果您使用IIS在服务器上托管应用程序,那么它很可能会使用虚拟IIS帐户来启动应用程序进程(IIS AppPool)。要解决这个问题,您需要获取应用程序正在使用的应用程序池名称(例如myapppool),请转到有问题的文件夹的属性安全选项卡,并为用户“IIS AppPool\myapppool”添加正确的访问权限(在您的案例中写入)。之后,一旦你重新启动应用程序,它将能够在那里创建文件。

相关问题