0

私はほぼ6ヶ月間運営されているウェブサイトを持っています。サイトには、ユーザーが最大5つのプロパティ画像をアップロードするセクションがあります。10ユーザーごとに、System.NotSupportedExceptionの問題が発生するユーザーが1人います。すべてのユーザーに発生するわけではなく、このエラーを再現できないようであるため、解決策を見つける方法がわかりません。エラーメッセージを見ると、マシンのネットワーク構成に関係している可能性があると思いますが、100%確信はありません。任意のアイデア/提案をいただければ幸いです。

画像のアップロードが行われるコードは次のとおりです。

private void UploadPhotos()
{
    Stream objStream;
    HttpFileCollection uploads = HttpContext.Current.Request.Files;
    for (int i = 0; i < uploads.Count; i++)
    {
        if (uploads[i].ContentLength == 0)
            continue;
        try
        {
            string fileName = Path.Combine(image + "-" + i.ToString(), uploads[i].FileName);
            //uploads[i].SaveAs(Server.MapPath("~/ExtendedImages/") + fileName);
            using (new Impersonator("serverusername", @"serverlocation", "serverpassword!"))
            {
                try
                {
                    uploads[i].SaveAs(@"serverlocation" + fileName);
                }
                catch (NotSupportedException ex)
                {
                    uploads[i].SaveAs(Server.MapPath("~/ExtendedImages/") + fileName);
                }
            }
            //uploads[i].SaveAs(Server.MapPath("~/ExtendedImages/") + fileName);
            byte[] myimage = new byte[uploads[i].ContentLength];
            objStream = uploads[i].InputStream;
            objStream.Read(myimage, 0, uploads[i].ContentLength);

            System.Drawing.Image Image1;
            System.Drawing.Image Thumbnail;

            Image1 = new Bitmap(objStream);

            Image1.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
            Image1.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);

            int NewWidth = 380;
            int MaxHeight = 400;

            if (Image1.Width <= NewWidth)
            {
                NewWidth = Image1.Width;
            }

            int NewHeight = Image1.Height * NewWidth / Image1.Width;

            if (NewHeight > MaxHeight)
            {
                NewWidth = Image1.Width * MaxHeight / Image1.Height;
                NewHeight = MaxHeight;
            }
            System.Drawing.Image NewImage = Image1.GetThumbnailImage(NewWidth, NewHeight, null, IntPtr.Zero);
            Thumbnail = Image1.GetThumbnailImage(100, 80, null, IntPtr.Zero);
            MemoryStream ms = new MemoryStream();
            MemoryStream ms2 = new MemoryStream();
            Thumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            NewImage.Save(ms2, System.Drawing.Imaging.ImageFormat.Jpeg);
            Photos photos = new Photos();
            photos.ID = HomeTourSession.HometourName;
            photos.AdId = (int)Session["adid"];
            photos.FullPhoto = ms2.ToArray();
            photos.ThumbnailPhoto = ms.ToArray();
            photos.AlternateText = "";
            photos.Insert();
        }
        catch (Exception exp)
        {
            throw new Exception("Error occured: " + exp);
        }
    }
}

これは、一部のユーザーが受けているエラーです。

エラーが発生しました:System.NotSupportedException:指定されたパスの形式はサポートされていません。System.Security.Util.StringExpressionSet.CanonicalizePath(String path、Boolean needFullPath)at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String [] str、Boolean needFullPath)at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access、 AccessControlActions control、String [] pathListOrig、Boolean checkForDuplicates、Boolean needFullPath、Boolean copyPathList)at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access、AccessControlActions control、String [] pathList、Boolean checkForDuplicates、Boolean needFullPath)at System.IO .FileStream.Init(文字列パス、FileModeモード、FileAccessアクセス、Int32権限、ブール値useRights、FileShare共有、

4

0 に答える 0