2014-10-28 95 views
0

我在global.asa文件中有以下代码。目标是从URL中获取分段,然后相应地运行代码。uriAddress.Segments [1]激发错误 - 索引超出了数组的范围

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
Uri uriAddress = new Uri(Request.Url.AbsoluteUri); 

     if (!String.IsNullOrEmpty(uriAddress.Segments[1])) 
     { 
      //do stuff 
     } 
} 

不幸的是,如果有在我得到的错误是“索引数组的范围之外”的网址不段。我怎样才能克服这个错误?

+0

'如果(uriAddress.Segments!= NULL && uriAddress.Segments.Length> 1 &&!String.IsNullOrEmpty(uriAddress.Segments [1]))' – Habib 2014-10-28 19:05:39

回答

0

之前试图让元素,检查数组的大小:

if (uriAddress.Segments.Length > 0) { 
    var segment = uriAddress.Segments[0]; 
} 

另外请注意,C#使用从零开始的数组,所以第一个元素是0,而不是1

+0

我已经了解到,[0]通常是指你说的第一个元素。这种情况下的第一个元素是斜杠(mydomain.com/)。如何检查斜杠后面的段是否为空? – Gloria 2014-10-28 19:02:51

-1

更改'if'语句以检查Segments数组的长度。

if(uriAddress.Segments.Length > 0 && !String.IsNullOrEmpty(uriAddress.Segments[1])) 
{ 
    //do stuff 
}