asp.net页面上的500内部服务器错误可能是由服务器引起的.MapPath



我正在尝试使用swfupload将文件上传到服务器。照片上传在开发机器上运行得很好,但当我试图在生产服务器上检查时。存在CCD_ 1。检查的异常详细信息

             `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);

这段代码在开发服务器上运行良好,但在生产环境中则不然。我不确定我在这里出了什么问题。/是我唯一的猜测,因为微软使用作为目录路径。但为什么它会在dev服务器上工作。如果有人能解决这个问题。。

问题是您正试图保存到App_Data文件夹中-该文件夹仅对实际代码可用。默认情况下,您不能写入它,也不能将其内容输出到您的网站。

App_Data专门用于Data,例如XML&数据库文件-请参阅此处了解更多信息:MSDN App_Data文件夹

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

要修复,请更改此:

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

类似的东西

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

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

更新

根据评论,您似乎收到了500 internal server error0消息。这通常是由于未设置对要保存到的文件夹的写入权限。更改它们以启用书写功能,您就可以继续了。不过,除非你真的必须,否则最好不要把它们保存在那里。。

相关内容

  • 没有找到相关文章

最新更新