0

我正在尝试使用 swfupload 将文件上传到服务器。照片上传在开发机器上工作得非常好,但是当我试图在生产服务器上检查它时。有500 internal server error。检查异常详细信息

             `Stack trace:    at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
   at System.Drawing.Image.Save(String filename, ImageFormat format)
   at ImageryDataAccess.SaveFullSizeImage(Byte[] ImageData)
   at ImageryDataAccess.SaveUserImage(Byte[] ImageData, Guid UserId)
   at Photos.Page_Load(Object sender, EventArgs e)
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) `

显示了这个细节。我检查了保存功能fullsizeimage,似乎只有一个嫌疑人,那就是

         string fileName=ImageName.ToString() + ".JPEG";
    string App_datapath = HttpContext.Current.Server.MapPath("~/App_Data/setP");
    bmp.Save(App_datapath+"/" +fileName, System.Drawing.Imaging.ImageFormat.Jpeg);

此代码在开发服务器上运行良好,但在生产服务器上运行良好。我不确定我在这里出了什么问题。/是我唯一的猜测是一个问题,因为微软\用于目录路径。但同样为什么它会在开发服务器上运行。如果有人能解决这个问题..

4

1 回答 1

1

问题是您试图保存到该App_Data文件夹​​ - 此文件夹仅适用于实际代码。默认情况下您无法写入,也无法将其内容输出到您的网站。

App_Data仅适用于数据-例如 XML 和数据库文件 - 请参阅此处了解更多信息:MSDN App_Data 文件夹

因此,即使您设法将文件保存到app_data您将无法显示它 - 您会收到未经授权的访问错误消息。

要修复,请更改此:

HttpContext.Current.Server.MapPath("~/App_Data/setP")

像这样

HttpContext.Current.Server.MapPath("~/uploadImages/setP")

基本上给自己一个不同的文件夹来上传。

更新

根据评论,您似乎收到了A Generic error occurred in GDI+.....消息。这通常是由于未设置您尝试保存到的文件夹的写入权限。更改它们以启用写入,您就可以开始了。不过,最好不要把它们保存在那里,除非你真的必须..

于 2013-07-03T13:11:16.190 回答