Eu tenho um site MVC3 em C #, tenho uma exibição específica sendo alimentada com parâmetros de consulta de uma função JavaScript, a função redireciona para o site via
window.location.href = "../ActionName?" + query_string;
query_string, sendo a sequência de parâmetros de consulta dinâmica criada pela função JavaScript.
A razão para essa estranheza é que, às vezes, a mesma função passa a URL para um formulário da Web do ASP.Net, devido ao uso do controle reportviewer , a ação alternativa é salvar alguns parâmetros, neste caso, passa para a exibição. (Pode elaborar mais se isso não fizer sentido)
A coisa toda funciona bem até eu apresentar [Autorizar] ao método de ação. Quebra se estiver no lugar, funciona bem sem e [Autorizar] funciona bem em todos os outros métodos.
A URL inteira, neste caso, tem 966 caracteres, depois de pesquisas, parece que o valor maxQueryStringLength é 2048 por padrão, mas pode ser substituído por qualquer valor do tipo número inteiro; portanto, apenas por sorrisos, adicionei o
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
chave para o arquivo de configuração da web abaixo da chave.
Não há alegria por lá, então fiquei ridículo e fiz 4096, ainda sem alegria.
Agora, com a URL inteira com 966 caracteres, o atributo authorize não pode adicionar seriamente outros 1082-3130, portanto, como posso determinar qual é realmente o erro ou por que a configuração não está entrando em vigor.
VS2010 Pro SP1
fonte
Respostas:
Quando uma solicitação não autorizada é recebida, a solicitação inteira é codificada em URL e adicionada como uma sequência de consultas à solicitação no formulário de autorização, para que eu possa ver onde isso pode resultar em um problema, dada a sua situação.
De acordo com o MSDN, o elemento correto a ser modificado para redefinir o maxQueryStringLength no web.config é o
<httpRuntime>
elemento dentro do<system.web>
elemento, consulte Elemento httpRuntime (esquema de configurações do ASP.NET) . Tente modificar esse elemento.fonte
Na raiz
web.config
do seu projeto, nosystem.web
nó:Além disso, eu tive que adicionar isso no
system.webServer
nó ou obtive um erro de segurança para minhas longas sequências de consulta:fonte
maxQueryString
é o comprimento em bytes como uint com um valor máximo de 4294967295 emaxQueryStringLength
é o comprimento em caracteres como int, mas com um intervalo de 0-2097151.Para qualquer outra pessoa que possa encontrar esse problema e não for resolvida por nenhuma das opções acima, é isso que funcionou para mim.
Desativei isso porque estávamos usando nosso próprio Auth, mas isso levou a esse mesmo problema e a resposta aceita não ajudou em nada.
fonte
Eu tenho esse erro usando datatables.net
Corrigi a alteração do ajax padrão Get to POST nas propriedades do DataTable ()
fonte