
我在C#中有一个MVC3站点,我有一个特殊的视图是从JavaScript函数提供查询参数,该函数通过以下方式重定向到站点
window.location.href ="../ ActionName?" + query_string;
query_string是JavaScript函数构建的动态查询参数字符串.
这种奇怪的原因是,有时相同的函数将URL传递给ASP.Net webform,因为它必须使用reportviewer控件,备用操作是保存一些参数,在这种情况下它传递给视图.(如果没有意义,可以详细说明)
整个工作正常,直到我将[授权]引入动作方法.如果它到位则中断,没有正常工作,并且[授权]在所有其他方法上正常工作.
在这种情况下,整个URL是966个字符长,在研究之后,默认情况下maxQueryStringLength值似乎是2048,但是可以覆盖到任何类型为integer的值,所以只是对于grins,我添加了
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
Run Code Online (Sandbox Code Playgroud)
密钥下的Web配置文件的密钥.
那里没有欢乐,所以我变得荒谬,并使它成为4096,仍然没有快乐.
现在整个URL长度为966个字符,授权属性不能严重添加另一个1082-3130字符,因此如何确定错误实际是什么,或者为什么设置没有生效.
VS2010 Pro SP1
我怀疑我只是误解了Array类的Clone()方法.但它会读取"创建System.Array的浅拷贝",所以我认为这意味着新的对象指针,而不是相同的对象指针......
以下真的应该发生吗?
假设一个测试对象......
public class testObject
{
public int propInt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以及以下测试......
//create a the list
List<testObject> testList = new List<testObject>();
//add items to the list
testObject item1 = new testObject();
item1.propInt = 1;
testList.Add(item1);
testObject item2 = new testObject();
item2.propInt = 2;
testList.Add(item2);
//create what should be a COPY of the array
testObject[] testArray;
testArray = (testObject[])testList.ToArray().Clone();
foreach (testObject item in testArray)
{
item.propInt++;
}
//check items in list
foreach (testObject item in testList)
{ …Run Code Online (Sandbox Code Playgroud)