Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数组边界之外的索引_C#_Asp.net - Fatal编程技术网

C# 数组边界之外的索引

C# 数组边界之外的索引,c#,asp.net,C#,Asp.net,在本地系统运行期间,但当我将其上传到现场时,我遇到了问题。。 我需要一些dll吗 索引超出了数组的边界。 异常详细信息:System.IndexOutOfRangeException:索引超出数组的边界 问题是在这种情况下;如果Path.Split'/'[3].EqualsDefault.aspx这可能是服务器路径与本地主机上的路径不同的原因 如果需要,请更换此!Path.Split'/'[3].EqualsDefault.aspx 与 如果让我猜的话,我会说可能是这样的: Path.Split

在本地系统运行期间,但当我将其上传到现场时,我遇到了问题。。 我需要一些dll吗

索引超出了数组的边界。 异常详细信息:System.IndexOutOfRangeException:索引超出数组的边界


问题是在这种情况下;如果Path.Split'/'[3].EqualsDefault.aspx这可能是服务器路径与本地主机上的路径不同的原因

如果需要,请更换此!Path.Split'/'[3].EqualsDefault.aspx 与


如果让我猜的话,我会说可能是这样的:

Path.Split('/')[3]
如果在下运行,则在调用Path.Split后,数组中的元素将比在下运行时多。在生产环境中,该数组中可能只有3个元素,而不是dev中可能有的4个元素

编辑:

对于您发布的页面,将返回对Request.Path的调用:

"/backend/default.aspx"
在“/”上进行拆分时,只会返回3个元素:

[0] = ""
[1] = "backend"
[2] = "default.aspx"

这就是Path.Split“/”[3]将抛出IndexOutOfRangeException的原因。因此,简单的回答是,您应该在生产环境中将其切换到Path.Split'/'[2],但更好的解决方案是找到一种在两种环境中使用相同代码处理案例的方法。

我认为问题在于Path.Split'/'[3],数组长度小于4。

路径。Split似乎是问题所在。为什么不使用Uri类来解析url。

而不是

if (!Path.Split('/')[3].Equals("Default.aspx") && (String)Session["accesslevel"] == ("0"))
使用以下命令:

Path.SubString(Path.LastIndexOf('/')).Equals("Default.aspx") .....

你们能告诉我们,你们在路径中有什么吗?你们能把你们的条件改为“若”吗!Path.Split'/'[2].EqualsDefault.aspx
if (!Path.Split('/')[3].Equals("Default.aspx") && (String)Session["accesslevel"] == ("0"))
Path.SubString(Path.LastIndexOf('/')).Equals("Default.aspx") .....