.NET上传出错。RunTime Error

bsdekj2 2010-04-09 05:05:34
在本地测试无问题,本地架设IIS别人远程上传无问题。传进FTP服务器就不能上传了(网站FCK编辑器可上传)。
错误为:
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

<!-- Web.Config Configuration File -->

<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>

Server Error in '/' Application.
下面是我上传的代码

protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileContentType = FileUpload1.PostedFile.ContentType;
if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg")
{
string name = FileUpload1.PostedFile.FileName; // 客户端文件路径

FileInfo file = new FileInfo(name);
string fileName = file.Name; // 文件名称
string fileName_s = "s_" + file.Name; // 缩略图文件名称
string fileName_sy = "sy_" + file.Name; // 水印图文件名称(文字)
string fileName_syp = "syp_" + file.Name; // 水印图文件名称(图片)

DateTime dt = DateTime.Today;
string filePath = string.Format("../file/{0}/{1}/{2}/",
dt.Year.ToString(), dt.Month.ToString(),dt.Day.ToString());

string webFilePath = Server.MapPath(filePath + fileName); // 服务器端文件路径
string webFilePath_s = Server.MapPath(filePath + fileName_s); // 服务器端缩略图路径
string webFilePath_sy = Server.MapPath(filePath + fileName_sy); // 服务器端带水印图路径(文字)
string webFilePath_syp = Server.MapPath(filePath + fileName_syp); // 服务器端带水印图路径(图片)
string webFilePath_sypf = Server.MapPath("file/shuiyin.jpg"); // 服务器端水印图路径(图片)
if (!Directory.Exists(Server.MapPath(filePath)))
{
Directory.CreateDirectory(Server.MapPath(filePath));
}

if (!File.Exists(webFilePath))
{
try
{
FileUpload1.SaveAs(webFilePath); // 使用 SaveAs 方法保存文件
//AddShuiYinWord(webFilePath, webFilePath_sy);
//AddShuiYinPic(webFilePath, webFilePath_syp, webFilePath_sypf);
MakeThumbnail(webFilePath, webFilePath_s, 130, 130, "Cut"); // 生成缩略图方法
string a = "提示:文件“" + fileName + "”成功上传,并生成“" + fileName_s + "”缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:" + FileUpload1.PostedFile.ContentLength + "B";

Response.Write("<script language=javascript>alert('" + a + "')</script>");

Image1.ImageUrl = filePath + fileName;
rblImgUrl.Items.Add(new ListItem(
"<img src=\"" + filePath + fileName_s + "\" />",
filePath + fileName));
}
catch (Exception ex)
{
string a = "提示:文件上传失败,失败原因:" + ex.Message;
Response.Write("<script language=javascript>alert('" + a + "')</script>");
}
}
else
{
string a = "提示:文件已经存在,请重命名后上传";
Response.Write("<script language=javascript>alert('" + a + "')</script>");
}
}
else
{
string a = "提示:文件类型不符";
Response.Write("<script language=javascript>alert('" + a + "')</script>");
}
}
}
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);

int towidth = width;
int toheight = height;

int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;

switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}

//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);

//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);

try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsdekj2 2010-04-11
  • 打赏
  • 举报
回复
今天上班,又试了一次.莫名其妙的好了.
估计是服务器的权限问题.

关于无法远程查看具体错误信息的问题.我想了下,扩大try的范围,出错时候显示出错内容就好了.

谢谢各位 结贴
wuyq11 2010-04-09
  • 打赏
  • 举报
回复
mode="Off"看看系统日志
检查文件夹权限
框架设置
路人乙e 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bsdekj2 的回复:]
引用 4 楼 sq_zhuyi 的回复:
最大的可能是对保存的目录没有写入权限

预知详细错误信息请修改web.config
<customErrors mode="On"/>
==>
<customErrors mode="Off"/>

已设置,还是不行
[/Quote]
并不是说你设置了off就可以了,设置这个属性是要你看到详细的错误信息

估计出错原因是你服务器上保存文件的目录没有匿名账户(默认为internet来宾用户)的写入权限
xiaod1986 2010-04-09
  • 打赏
  • 举报
回复
纯学习 支持一下!!
bsdekj2 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sq_zhuyi 的回复:]
最大的可能是对保存的目录没有写入权限

预知详细错误信息请修改web.config
<customErrors mode="On"/>
==>
<customErrors mode="Off"/>
[/Quote]
已设置,还是不行
hzxsasdfgh 2010-04-09
  • 打赏
  • 举报
回复
  描述:一个应用程序错误出现在服务器上。目前常用的错误设置为该应用程序的细节,防止错误被视为远程(因为安全原因)。它可以,但是被浏览器运行在当地的服务器。
  
  细节的细节:使这个特定的错误信息被试在遥远的机器,请创建一个< customErrors >内的一些“标签”的配置文件中位于根目录的当前的网络应用程序。这个< customErrors >标记应“模式”属性设置为“关”。
路人乙e 2010-04-09
  • 打赏
  • 举报
回复
最大的可能是对保存的目录没有写入权限

预知详细错误信息请修改web.config
<customErrors mode="On"/>
==>
<customErrors mode="Off"/>
liss_2009 2010-04-09
  • 打赏
  • 举报
回复
路过,学习!
xiongxyt2 2010-04-09
  • 打赏
  • 举报
回复
up!!!
zsz1001 2010-04-09
  • 打赏
  • 举报
回复
路径有问题吧。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧