日期:2014-05-17  浏览次数:20527 次

求帮助,急急急~~~~~StartIndex 不能小于 0
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;
  }
  }
  }


麻烦大家帮我看看。。。

------解决方案--------------------
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
这句问题
Request.Files[i].FileName.LastIndexOf('\\',0));
有一条应该为空 index 为-1
------解决方案--------------------
判断
if(Request.Files[i].FileName.LastIndexOf('\\',0)!=-1)
{
string mc=Request.Files[i].FileName.Substring(Request.Files[i].FileName.LastIndexOf('\\',0));
}
------解决方案--------------------

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

这个的问题。。。

Request.Files[i].FileName调试一下。。看值是什么
------解决方案--------------------
Substring(-1)会报错:StartIndex 不能小于 0。

------解决方案--------------------
如果
Request.Files[i].FileName.LastIndexOf('\\',0)
没找到的话返回的是-1,因此subString(startindex)中startindex=-1,这样就报错了
做个容错,找到了才截取 ,没找到就另外做处理
------解决方案--------------------
subString(-1) 会报错,StartIndex不能小于0
------解决方案--------------------
if(Request.Files[i].FileName.LastIndexOf('\\',0)!=-1)
{