求帮助,急急急~~~~~StartIndex 不能小于 0

郑杰 2012-04-23 10:09:09
StartIndex 不能小于 0。
参数名: startIndex
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: StartIndex 不能小于 0。
参数名: startIndex

源错误:


行 85: WebData.Model.HT_JSHT_FJ fj = new WebData.Model.HT_JSHT_FJ();
行 86: fj.HT_JSHT_FJ_HTID = htid;
行 87: string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
行 88: fj.HT_JSHT_FJ_MC = mc.Substring(1, mc.Length - 5);
行 89: fj.HT_JSHT_FJ_LJ = "ht_fj\\" + year + "\\" + hid_htbh.Value + "\\" + newFileName;




这里是源文件:
for (int i = 0; i < Request.Files.Count; i++)
{
if (Request.Files[i].ContentLength > 0 && Request.Files[i].ContentLength <= 209715200)
{
string ex = System.IO.Path.GetExtension(Request.Files[i].FileName).ToLower();
if (".jpg.gif.png.bmp".Contains(ex))
{
string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + r.Next(100, 999).ToString() + ex;
//保存文件名到数据库
//xxxxxxxxxxxxxxxx
WebData.Model.HT_JSHT_FJ fj = new WebData.Model.HT_JSHT_FJ();
fj.HT_JSHT_FJ_HTID = htid;
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
fj.HT_JSHT_FJ_MC = mc.Substring(1, mc.Length - 5);
fj.HT_JSHT_FJ_LJ = "ht_fj\\" + year + "\\" + hid_htbh.Value + "\\" + newFileName;
fj.HT_JSHT_FJ_ZT = 1;
WebData.DAL.HT_JSHT_FJ.Add(fj);
//xxxxxxxxxxxxxxxx

Request.Files[i].SaveAs(Server.MapPath("../ht_fj") + "\\" + year + "\\" + hid_htbh.Value + "\\" + newFileName);
//pic = newFileName;
}
}
}


麻烦大家帮我看看。。。
...全文
751 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuepdcwqs 2012-04-23
  • 打赏
  • 举报
回复
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));

这里可以先判断,再执行你后面的代码。

if(Request.Files[i].FileName.LastIndexOf('\\')> -1)
{
string mc=Request.Files[i].FileName.Substring(Request.Files
[i].FileName.LastIndexOf('\\',0));
.......
}
hanqing_liu 2012-04-23
  • 打赏
  • 举报
回复
if(Request.Files[i].FileName.LastIndexOf('\\',0)!=-1)
{
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));

}
郑杰 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
如果
Request.Files[i].FileName.LastIndexOf('\\',0)
没找到的话返回的是-1,因此subString(startindex)中startindex=-1,这样就报错了
做个容错,找到了才截取 ,没找到就另外做处理
[/Quote]


那麻烦问下,这种问题应该怎么处理啊。~~
郑杰 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
Request.Files[i].FileName.LastIndexOf('\\',0)

这个的问题。。。

Request.Files[i].FileName调试一下。。看值是什么
[/Quote]


Request.Files[i].FileName = "C:\\Documents and Settings\\Administrator\\桌面\\本地考勤软件截图\\3.jpg"
  • 打赏
  • 举报
回复
subString(-1) 会报错,StartIndex不能小于0
EnForGrass 2012-04-23
  • 打赏
  • 举报
回复
如果
Request.Files[i].FileName.LastIndexOf('\\',0)
没找到的话返回的是-1,因此subString(startindex)中startindex=-1,这样就报错了
做个容错,找到了才截取 ,没找到就另外做处理
  • 打赏
  • 举报
回复
Substring(-1)会报错:StartIndex 不能小于 0。
porschev 2012-04-23
  • 打赏
  • 举报
回复

Request.Files[i].FileName.LastIndexOf('\\',0)

这个的问题。。。

Request.Files[i].FileName调试一下。。看值是什么
hanqing_liu 2012-04-23
  • 打赏
  • 举报
回复
判断
if(Request.Files[i].FileName.LastIndexOf('\\',0)!=-1)
{
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
}
郑杰 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
这句问题
Request.Files[i].FileName.LastIndexOf('\\',0));
有一条应该为空 index 为-1
[/Quote]


那麻烦问一下,这个index为-1应该怎么写。。
而且一个很严重的问题是:有的电脑上用着没有问题,有的电脑用才出现这个问题,
hanqing_liu 2012-04-23
  • 打赏
  • 举报
回复
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
这句问题
Request.Files[i].FileName.LastIndexOf('\\',0));
有一条应该为空 index 为-1
郑杰 2012-04-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
大家都告诉你怎么处理了,你还在应该怎么处理。

if ==-1就什么也不处理
else
正常代码处理。
[/Quote]


……好吧。。。谢谢大家了。。但是如果什么也不处理的话程序就不动了。。o(︶︿︶)o 唉。
orochiheart 2012-04-23
  • 打赏
  • 举报
回复
判断一下字符串的长度 如果为0 就不要截取了 string.Length
test2050 2012-04-23
  • 打赏
  • 举报
回复
大家都告诉你怎么处理了,你还在应该怎么处理。

if ==-1就什么也不处理
else
正常代码处理。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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